加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何使用SIGSEGV的信号处理程序调试程序

发布时间:2020-12-16 03:43:01 所属栏目:百科 来源:网络整理
导读:我正在为一个应用程序编写一个插件,偶尔会抛出一个SIGSEGV.但是,应用程序捕获信号SIGSEGV.换句话说,插件是一个动态库.错误发生在我的插件和动态库中.但applcation处理sSIGSEGV并正常退出.因此,我很难调试并获得所有堆栈帧的回溯.任何的想法? 目前我使用gdb
我正在为一个应用程序编写一个插件,偶尔会抛出一个SIGSEGV.但是,应用程序捕获信号SIGSEGV.换句话说,插件是一个动态库.错误发生在我的插件和动态库中.但applcation处理sSIGSEGV并正常退出.因此,我很难调试并获得所有堆栈帧的回溯.任何的想法?

目前我使用gdb作为调试工具.

解决方法

GDB将在应用程序执行之前捕获SIGSEGV.

您对Logan的回答所描述的内容毫无意义.

我怀疑真正发生的事情是应用程序创建了一个新进程,并且只在其他进程中获取SIGSEGV,而不是将GDB附加到其中的进程.

如果我的猜测正确,以下命令可能会有用:

(gdb) catch fork
(gdb) catch vfork
(gdb) set follow-fork-mode child

您可能还想编辑和扩展您的问题:

>你怎么知道有SIGSEGV开头?>发布与GDB交互的日志也可能有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读