前端之家收集整理的这篇文章主要介绍了
c – 如何使用SIGSEGV的信号处理程序调试程序,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为一个应用程序编写一个
插件,偶尔会抛出一个SIGSEGV.但是,应用程序捕获信号SIGSEGV.换句话说,
插件是一个动态库.
错误发生在我的
插件和动态库中.但applcation处理sSIGSEGV并正常
退出.因此,我很难调试并获得所有堆栈帧的回溯.任何的想法?
目前我使用gdb作为调试工具.
GDB将在应用程序执行之前捕获SIGSEGV.
您对Logan的回答所描述的内容毫无意义.
我怀疑真正发生的事情是应用程序创建了一个新进程,并且只在其他进程中获取SIGSEGV,而不是将GDB附加到其中的进程.
如果我的猜测正确,以下命令可能会有用:
(gdb) catch fork
(gdb) catch vfork
(gdb) set follow-fork-mode child
您可能还想编辑和扩展您的问题:
>你怎么知道有SIGSEGV开头?>发布与GDB交互的日志也可能有用.
原文链接:https://www.f2er.com/c/110503.html