栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

设置gdb出口断点不起作用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设置gdb出口断点不起作用?

_exit
断点“丢失”的常见原因有两个-要么
GDB
未将断点设置在正确的位置,要么程序执行了(在道德上等效)
syscall(SYS_exit,...)

什么

info break
disassemble _exit
怎么说?

您也许可以说服

GDB
使用正确设置断点
break *&_exit
。或者,
GDB-7.0
支持
catchsyscall
。不管程序如何退出,这样的事情都应该起作用(假设
Linux/x86_64
;请注意,
ix86
数字会有所不同):

(gdb) catch syscall 60Catchpoint 3 (syscall 'exit' [60])(gdb) catch syscall 231Catchpoint 4 (syscall 'exit_group' [231])(gdb) cCatchpoint 4 (call to syscall 'exit_group'), 0x00007ffff7912f3d in _exit () from /lib/libc.so.6

更新:
您的注释表明_exit断点设置正确,因此您的进程很可能没有执行

_exit

这留下

syscall(SYS_exit,...)
了另一种可能性(我之前没有提到过):所有线程正在执行
pthread_exit
。您可能还希望在其上设置一个断点
pthread_exit
(并在
infothread
每次单击该断点时执行-最后一个线程执行
pthread_exit
将导致进程终止)。

编辑:

同样值得注意的是,您可以使用助记符名称,而不是syscall号。您还可以同时将多个系统调用添加到捕获列表,如下所示:

(gdb) catch syscall exit exit_groupCatchpoint 2 (syscalls 'exit' [1] 'exit_group' [252])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394275.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号