Chinaunix

标题: linux下如何调试多文档c程序? [打印本页]

作者: sufive    时间: 2006-08-12 09:45
标题: linux下如何调试多文档c程序?
我有一个比较大的c程序需要调试。
为了清楚表达我的问题,让我用一个比较简单的例子来说明。

假设我的程序文件包括:

    main.c, utility1.c, utility2.c

编译之后我就有

    main.o, utility1.o, utility2.o

连接形成可执行程序之后我有

    main.exe

我现在要用gdb来调试这个项目,应该如何办?
作者: wattwang    时间: 2006-08-12 09:53
gdb main
作者: sufive    时间: 2006-08-12 10:15
标题: re: linux下如何调试多文档c程序? re: gdb main
老兄,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>
作者: wattwang    时间: 2006-08-12 11:44
那你的调试是什么个意思?
作者: x2    时间: 2006-08-12 16:24
原帖由 sufive 于 2006-8-12 10:15 发表
老兄,gdb main.exe的话,打出来的信息总是人看不懂的
一些机器指令以及机器地址信息.譬如说:

  gdb gle.exe                      (我的主程序是gle.exe)
   <gdb>run fitz.gle             (我的主 ...


发生段错误了,通常因为指针操作不当, 访问了非法地址。
backtrace 一下,看哪里出错了。
作者: Bayweb    时间: 2006-08-13 12:05
原帖由 sufive 于 2006-8-12 09:45 发表
我有一个比较大的c程序需要调试。
为了清楚表达我的问题,让我用一个比较简单的例子来说明。

假设我的程序文件包括:

    main.c, utility1.c, utility2.c

编译之后我就有

    main.o, utility1.o,  ...

>>
>>
>>编译的时候加上-g参数,然后直接gdb main.exe就可以了。
>>顺便说一下,exe后缀的文件在linux是比较奇怪的,你用的什么平台?
>>
>>

[ 本帖最后由 Bayweb 于 2006-8-13 12:07 编辑 ]
作者: why_not    时间: 2006-08-13 13:00
怀疑
lz 要表达的时
载 linux 下怎么调试 exe 文件
:)
作者: sufive    时间: 2006-08-13 18:12
谢谢各位,我的问题已经解决了。

我的问题是:需要调试一个非常大的项目,这个项目由多个源文件
构成,编译之后形成单一的exe文件,因为我的源文件数目太多,
我没法逐一地为编译这些源文件的make命令加上-g参数,而只
是在main.cpp文件的make编译命令中加上了-g参数,所以在调试
时,一旦程序的执行超出了main.cpp的范围,gdb就打印出看不懂
的信息。

另外,我使用的是cygwin平台,它是一个在windows环境下
仿真linux的开发平台。使用这个平台的好处是我可以使用windows的
编辑工具譬如source-insight之类来编写员文件。

我的可执行文件都命名为*.exe形式,因为我这些程序虽然是用
cygwin为linux编译形成的,它们在我的windows操作系统下是
完全可见的,可修改的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2