linux下如何调试多文档c程序?
我有一个比较大的c程序需要调试。
为了清楚表达我的问题,让我用一个比较简单的例子来说明。
假设我的程序文件包括:
main.c, utility1.c, utility2.c
编译之后我就有
main.o, utility1.o, utility2.o
连接形成可执行程序之后我有
main.exe
我现在要用gdb来调试这个项目,应该如何办?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
谢谢各位,我的问题已经解决了。
我的问题是:需要调试一个非常大的项目,这个项目由多个源文件
构成,编译之后形成单一的exe文件,因为我的源文件数目太多,
我没法逐一地为编译这些源文件的make命令加上-g参数,而只
是在main.cpp文件的make编译命令中加上了-g参数,所以在调试
时,一旦程序的执行超出了main.cpp的范围,gdb就打印出看不懂
的信息。
另外,我使用的是cygwin平台,它是一个在windows环境下
仿真linux的开发平台。使用这个平台的好处是我可以使用windows的
编辑工具譬如source-insight之类来编写员文件。
我的可执行文件都命名为*.exe形式,因为我这些程序虽然是用
cygwin为linux编译形成的,它们在我的windows操作系统下是
完全可见的,可修改的。
怀疑
lz 要表达的时
载 linux 下怎么调试 exe 文件
:)
>>
>>
>>编译的时候加上-g参数,然后直接gdb main.exe就可以了。
>>顺便说一下,exe后缀的文件在linux是比较奇怪的,你用的什么平台?
>>
>>
[ 本帖最后由 Bayweb 于 2006-8-13 12:07 编辑 ]
发生段错误了,通常因为指针操作不当, 访问了非法地址。
backtrace 一下,看哪里出错了。
那你的调试是什么个意思?
老兄,gdb main.exe的话,打出来的信息总是人看不懂的
一些机器指令以及机器地址信息.譬如说:
gdb gle.exe (我的主程序是gle.exe)
<gdb>run fitz.gle (我的主程序需要从fitz.gle中读入数据)
starting program /cygdrive/e/texRelated/GLE/gle4/build/bin/gle.exe fitz.gle
program received signal SIGSEGV, Segmentation fault.
0x610b2c16 in pthread_key_create <> from /usr/bin/cygwin1.dll
<gdb>
gdb main