免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: testh
打印 上一主题 下一主题

[实践] gdb可以实现源码级调试so文件吗?[己解决] [复制链接]

论坛徽章:
0
21 [报告]
发表于 2013-01-08 14:19 |只看该作者
本帖最后由 testh 于 2013-01-08 15:09 编辑

最新进展。
已经将debug信息在编译时加入了libasound.so.2.0.0中。
在上一贴中使用info shared命令显示missing debugging information.
在刚才的显示中为:
22          for (i = 0; i < sizeof(buffer); i++)
(gdb) info shared
From        To          Syms Read   Shared Object Library
0x00110830  0x001274cf  Yes (*)     /lib/ld-linux.so.2
0x0014d5d0  0x001f61f8  Yes         /usr/lib/libasound.so.2
0x002164b0  0x00230b38  Yes (*)     /lib/i386-linux-gnu/libm.so.6
0x00239a40  0x0023a998  Yes (*)     /lib/i386-linux-gnu/libdl.so.2
0x00241610  0x0024d9d8  Yes (*)     /lib/i386-linux-gnu/libpthread.so.0
0x002578c0  0x0025b578  Yes (*)     /lib/i386-linux-gnu/librt.so.1
0x00275c10  0x00381524  Yes (*)     /lib/i386-linux-gnu/libc.so.6
(*): Shared library is missing debugging information.
(gdb) c

请注意,在蓝色的那一行中,Yes后面已经没有“*”了,有“*”意味着(*): Shared library is missing debugging information.

对比刚才的操作,刚才是直接在./configure后生成的Makefile中的CFLAGS = -D_GNU_SOURCE 加入了-g为 CFLAGS = -D_GNU_SOURCE -g.
后来仔细看了./configure --help 发现可以通过环境变量来设置 CFLAGS ,于是先 export CFLAGS = -g 然后再./configure,之后再检查生成的Makefile,它的CFLAGS=-g -D_GNU_SOURCE,然后再继续make,make install后发现,竟然已经包含了debugging information.
不知道-D_GNU_SOURCE与-g的先后顺序竟然有如此大的影响?

论坛徽章:
0
22 [报告]
发表于 2013-01-08 14:21 |只看该作者
刚接触libasound,学习

论坛徽章:
0
23 [报告]
发表于 2013-01-08 14:27 |只看该作者
但是,仍然不能step 进入libasound.so.2.0.0的函数中
  1. Breakpoint 2, 0x00179c72 in snd_pcm_open () from /usr/lib/libasound.so.2
  2. (gdb) s
  3. Single stepping until exit from function snd_pcm_open,
  4. which has no line number information.
  5. zz[snd_dlsym_verify:121],vname=[_snd_config_hook_load_dlsym_config_hook_001]
  6. zz[snd_dlsym_verify:123]
  7. zz[snd_dlsym_verify:121],vname=[__snd_pcm_hw_open_dlsym_pcm_001]
  8. zz[snd_dlsym_verify:123]
  9. main () at pcm_min.c:31

复制代码
使用step的时候提示 :which has no line number information。
继续查找

论坛徽章:
0
24 [报告]
发表于 2013-01-08 14:28 |只看该作者
回复 22# aulara


   共同学习。

论坛徽章:
0
25 [报告]
发表于 2013-01-08 14:36 |只看该作者
testh 发表于 2013-01-08 14:19
最新进展。
已经将debug信息在编译时加入了libasound.so.2.0.0中。
在上一贴中使用info shared命令显示mi ...

shit,原来我只在alsa-lib-1.0.24.1的topdir中的makefile中加了-g,而没有在他的递归子目录下添加,手动添加很容易忘。还是需要用策略添加,直接在环境变量中添加。

论坛徽章:
0
26 [报告]
发表于 2013-01-08 15:04 |只看该作者
已经可以了正常进入libasound.so.2.0.0的源码中进行调试了。
前面之所以不能进入是因为所使用的libasound.so.2.0.0是原来的旧版本,后来重新编译,使用新的so覆盖旧的文件就可以了。

论坛徽章:
0
27 [报告]
发表于 2013-01-08 15:05 |只看该作者
感谢楼上各位朋友的帮助。
可以结贴了。

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
28 [报告]
发表于 2013-01-08 16:50 |只看该作者
testh 发表于 2013-01-08 14:11
回复 19# T-Bagwell



那就是代码路径要和你是用的alsa编译的时候的路径对应上,就可以了

论坛徽章:
0
29 [报告]
发表于 2013-01-08 18:57 |只看该作者
回复 18# testh

可以用readelf -S *.so指令查看文件是否有以下Section
.debug_aranges
.debug_pubnames
.debug_info等调试信息。

这些调试信息属于dwarf格式规范,可以参考http://www.dwarfstd.org/上的资料
   

论坛徽章:
0
30 [报告]
发表于 2013-01-09 12:53 |只看该作者
我调试alsa已经发布到了http://blog.chinaunix.net/uid-22883023-id-3467299.html你有兴趣可以看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP