大型可执行文件会导致调试器挂起
Large executable causes debuggers to hang
我有一个190 MB大小的C++二进制文件。当我将这个二进制文件放入dbx并尝试创建断点时,dbx挂起。当dbx挂起时,我观察到它的内存迅速增长到10GB以上。TotalView允许我设置断点;然而,它显示的所有数据都是伪造的。我已经成功地调试了许多其他较小的二进制文件,所以我的直觉是这个二进制文件的大尺寸是问题所在。
二进制:ELF 32位MSB可执行文件SPARC32PLUS版本1,V8+必需,动态链接,未剥离
编译器:CC:Sun C++5.9 SunOS_sparc 2007/05/03。
数据库:7.6 SunOS_sparc 2007/05/03。
TotalView:8.2.0-0
操作系统:Solaris 10
我如何使用Dbx:
dbx mybinary
stop at Something.cc:170
Dbx从未从这个命令返回,我最终不得不从一个单独的终端杀死Dbx。
我尝试了一些没有成功的事情:
1.在大多数库中动态切换到链接,这将二进制大小减少到19MB
2.已在Solaris x86上试用。
3.将软件编译为64位。
有人知道是什么导致了这种情况的发生,以及如何解决这个问题吗?
尝试使用其他调试器进行调试,以确定您的代码是否导致了问题。我在Solaris上最喜欢的调试器是mdb:
mdb ./yourapplicationname
> your_c_fn_name::bp
> ::run
如果您使用C++进行编码,请记住使用损坏的函数名。你通过管道将nm输出到grep,以了解你被破坏的函数名称是什么:
nm ./yourapplicationname | grep yourc++fnname
如果mdb对dbx也有同样的问题,那么我建议您查看一下您的代码。然而,如果mdb顺利到达bp,那么您可以使用mdb(据我所知,它不能使用源文件),也可以不断调整应用程序以使dbx满意。
相关文章:
- 挂起和取消挂起一个文件DLL
- Linux 计时器挂起信号
- 调试器在异常C++时未挂起调试对象
- Eclipse PTP挂起OpenMPI应用程序的启动调试会话
- 安卓 |如何调试应用启动或挂起应用,直到调试器连接
- 调试Win32应用程序挂起
- 节目挂在Visual Studio调试器中
- main:返回0挂起,退出0关闭.如何调试
- 链表程序挂在代码块调试器下,但在其他情况下正常执行
- 使用应用程序验证程序调试时应用程序挂起
- 在调试器模式下工作,但在最终版本中不起作用.为什么
- 我可以编写什么程序来冻结/挂起我的程序来测试看门狗计时器
- visualstudio2015在调试期间挂起默认控制台应用程序文件
- 大型可执行文件会导致调试器挂起
- Mac C/C++Eclipse调试器挂起
- 当我调试方法AttachThreadInput()时,Visual Studio 2010挂起
- GDB 调试器在代码::块中不起作用
- Qt 调试器输入不起作用
- GDB调试器挂在std::cout上
- 调试应用程序在使用beginthreadex创建线程时挂起