Linux下GDB调试的几个问题。

Javesun 2010-06-24 09:38:18
新手刚开始学习Linux下的编程,有以下几个问题:

1)一个项目有个多个文件,在产生目标文件时,有的增加了-g,有的没有增加-g,这样能调试吗?

2)用make、make install 生成的程序,如何用GDB调试?是在makefile文件中修改成(增加) -g吗?

3)如果用make、make install 生成一个shell命令文件和一个程序,在启动时是通过该shell命令来启动的,这样的情况下如何调试?
...全文
192 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 javesun 的回复:]
新手刚开始学习Linux下的编程,有以下几个问题:

1)一个项目有个多个文件,在产生目标文件时,有的增加了-g,有的没有增加-g,这样能调试吗?

2)用make、make install 生成的程序,如何用GDB调试?是在makefile文件中修改成(增加) -g吗?

3)如果用make、make install 生成一个shell命令文件和一个程序,在启动时是通过该shell命……
[/Quote]

1能调试,但是看不到符号及源程序
2最好还是加上-g,这样调试起来方便定位错误
goodluckyxl 2010-07-15
  • 打赏
  • 举报
回复
core文件生成要设置一个条件的
具体搜一下很简单 声称core文件后就可以用gdb分析找到具体行数

没有的加-g无法声称符号表 gdb认不出来无法很好断点调试
用shell启动有pid gdb可以接管pid进行调试
Gary@Tokyo 2010-07-14
  • 打赏
  • 举报
回复
过来学习,属于学习阶段
还没学到写makefile
赵4老师 2010-06-24
  • 打赏
  • 举报
回复
没有-g用gdb调试只不过看不到汇编指令对应的源代码,照样可以调试。
一般在源码中相应位置增加写日志到文件的方法调试就够用了。

用gdb最常用的情况是程序意外退出产生core文件,用gdb加载此core文件,
gdb 运行程序名 core.数字
再使用bt命令得到出错时的函数调用堆栈
Javesun 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 macrojj 的回复:]
3)如果用make、make install 生成一个shell命令文件和一个程序,在启动时是通过该shell命令来启动的,这样的情况下如何调试?

还是那么调试呗
[/Quote]

大哥,能再详细些不?我在想,用shell命令文件启动,在真正启动程序之前,它做了些其他的工作,这个可能是和程序的启动有关的。
Javesun 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cattycat 的回复:]

调试的话,编译的时候要加-g选项,没有不能调试。
makefile中编译的地方加上-g吧,但估计能用makefile的估计很大了,调试起来也费劲。
调试不是都是gdb 程序名的么。
[/Quote]

是gdb 程序名,不是要有个条件的吗?要加-g gcc -g XXXX。
macrojj 2010-06-24
  • 打赏
  • 举报
回复

3)如果用make、make install 生成一个shell命令文件和一个程序,在启动时是通过该shell命令来启动的,这样的情况下如何调试?

还是那么调试呗
cattycat 2010-06-24
  • 打赏
  • 举报
回复
调试的话,编译的时候要加-g选项,没有不能调试。
makefile中编译的地方加上-g吧,但估计能用makefile的估计很大了,调试起来也费劲。
调试不是都是gdb 程序名的么。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧