C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 大型可执行文件导致调试程序挂起大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个190 MB的C二进制文件.当我将这个二进制文件放入dbx并尝试创建断点时,dbx会挂起.当dbx挂起时,我发现它的内存很快就会增长到10 GB以上. @R_430_10586@lView允许我设置断点;但是,它显示的所有数据都是虚假的.我已成功调试了许多其他较小的二进制文件,所以我的预感是这个二进制文件的大尺寸是问题所在.

二进制:ELF 32位MSB可执行文件SPARC32PLUS版本1,V8必需,动态链接,不剥离.
编译:CC:Sun C 5.9 SunOS_sparc 2007/05/03.
Dbx:7.6 SunOS_sparc 2007/05/03.
@R_430_10586@lView:8.2.0-0
操作系统:Solaris 10

我如何使用Dbx:

dbx mybinary
stop at Something.cc:170

Dbx永远不会从这个命令返回,我必须最终从一个单独的终端杀死Dbx.

我尝试了一些没有成功的事情:
1.动态切换到大多数库中的链接,这将二进制大小减小到19 MB.
2.试用Solaris x86.
3.将软件编译为64位.

有谁知道可能导致这种情况发生的原因以及如何解决问题?

@L_674_12@

尝试使用其他调试器进行调试,以确定您的代码是否导致问题.我在Solaris上最喜欢的调试器是mdb:

@H_534_15@mdb ./yourapplicationname > your_c_fn_name::bp > ::run

如果您使用C编码,请记住使用损坏的函数名称.您将nm输出管道输出到grep以找出您的错位函数名称是什么:

nm ./yourapplicationname | grep yourc++fnname

如果mdb与dbx有同样的问题,那么我建议您查看一下代码.但是,如果mdb在没有问题的情况下访问bp,那么你可以使用mdb(据我所知,它不能使用源文件),或者你可以继续调整你的应用程序以使dbx满意.

大佬总结

以上是大佬教程为你收集整理的c – 大型可执行文件导致调试程序挂起全部内容,希望文章能够帮你解决c – 大型可执行文件导致调试程序挂起所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。