免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1561 | 回复: 4
打印 上一主题 下一主题

请教一下:怎么在发布版的程序上进行调试? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-20 23:17 |只看该作者 |倒序浏览
请问一下有没有什么办法在发行版的程序上查询任务上下文寄存器的值,查询堆栈信息,查看变量的值等?
在调试版本上可以用GDB等将调试信息编入到程序中进行调试,但在发布版本上一般是不会编入调试信息的,那万一出了问题,怎么调试呢?

coredump能够在程序出了致命异常后记录下一些信息,但如果程序没有出致命异常,而仅仅是逻辑上的错误,那coredump也记录不下来啊。

我原来是在VxWorks上做开发的,不存在这样的问题,只要程序在运行,随时可以进行调试。但不知道在linux上调程序有什么好方法没有。

请各位大侠指点一下啊,多谢

论坛徽章:
0
2 [报告]
发表于 2009-10-21 00:04 |只看该作者
最好的方法是先测试好。当然肯定还会有没预料到的地方。GDB可以让你动态的连到一个PROCESS.然后就可以调试了。没有SYMBOL就调汇编贝。常用的命令:

disas //显示汇编代码
info registers //显示各个寄存器,包括EIP, EBP, ESP

常用的命令还可以看下这里:
http://blog.chinaunix.net/u/9577/showart_408305.html

论坛徽章:
0
3 [报告]
发表于 2009-10-21 00:39 |只看该作者
原帖由 accessory 于 2009-10-21 00:04 发表
最好的方法是先测试好。当然肯定还会有没预料到的地方。GDB可以让你动态的连到一个PROCESS.然后就可以调试了。没有SYMBOL就调汇编贝。常用的命令:

disas //显示汇编代码
info registers //显示各个寄存器, ...



非常感谢,没想到这么快就有回复了。

我按你讲的方法去琢磨琢磨,以后有问题再来请教。

论坛徽章:
0
4 [报告]
发表于 2009-10-21 12:58 |只看该作者
gdb有几个命令:

exec-file <abc> 指定abc为被调试文件
symbol-file <abc> 指定abc为符号文件
file <abc>  这个是上面两个的集成,指定abc同时是被调试文件和符号文件

你分开不就得了?

论坛徽章:
0
5 [报告]
发表于 2009-10-24 12:56 |只看该作者
其实发布版最好在程序中预留一些调试的点。当时候可以打印出信息来。

也就是在架构上添加调试的功能。

就像网络的hook点一样,当把一个调试模块注册上以后,这些hook点就可以打印东西了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP