Clear

记忆中的闪光,总会蒙尘。
随笔 - 6, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

GDB在Mac下的调试信息

上次说了GDB的pretty printer,这次来说说调试程序的问题。

在Linux或者Windows下面,写好代码,g++编译,连接,调试,一切很顺畅。

但是在Mac下面,有点小问题。

我们如果是直接编译生成可执行文件:

g++ test.cpp -g -o test

ok,我们用GDB调试,没有问题。
但是如果我们分两步,编译和连接分开的话:

g++ test.cpp -g -c -o test.o
g++ -o test test.o

这次我们gdb test再调试,会发现GDB找不到调试符号信息!

两次生成有什么不同呢?
一次编译生成的test,旁边有一个test.dSYM,而单独连接的test,没有这个。

test.dSYM就是调试符号信息。
要想生成这个东西,也简单,运行dsymutil就可以了: 

dsymutil test

再然后,就可以用GDB顺利调试了。

g++直接生成可执行文件的时候,会帮我们调用一次dsymutil,但是单独连接的时候却不会做这个,这就是造成差别的原因。

posted on 2012-10-28 23:47 Clear 阅读(854) 评论(0)  编辑 收藏 引用 所属分类: C++MacGDB


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理