我正在调试一个程序,使用valgrind和gdb。但是,我以野蛮的方式终止这些调试会话(…)。是否真的要这样做呢?
设置调试会话
按照官方网站的说明,我执行以下操作来运行该程序:
到目前为止,这个程序运行在两个终端中(一个用于valgrind,另一个用于gdb)。然后val差尔发现一个错误,例如无效的读取,程序执行暂停。
终止会话
在这一点上,我想摆弄我的代码:也许修复一些东西,或者注释/取消程序的源代码。因此,该程序需要重新编译。生成一个新的二进制文件。在此之后,我希望停止正在进行的val差事和gdb会话(使用旧的二进制文件),并启动使用新二进制文件的新val差事和gdb会话。
为了停止正在进行的会话,我退出了gdb。
(gdb) q有时候,val差尔注意到gdb已经不在了,并且也退出了。但也有一些时候,伐研甚至还在继续--尽管不再存在gdb进程,…。
在这种情况下,我杀死了对应于我的val研会话的“memcheck 64-”过程。该过程的数量在val差发消息中表示,例如,16195在==16195== Invalid read of size 8中)。
kill -9 16195一个常规的杀死是不够的:我需要使用-9选项。
我不认为调用kill -9是为了实现…我漏掉了什么吗?
版本: 3.10.1
gdb版本: 7.7.1
发布于 2017-06-09 20:43:30
您也可以使用comand
(gdb)monitor v.kill它被列在gdb的监视器帮助上。
发布于 2022-05-15 17:44:11
只需使用kill命令或简单地
kset confirm off文件中使用.gdbinit发布于 2018-09-06 23:01:03
以前的答案对我没有用,所以我找到了这。
(gdb) info inferiors应该列出gdb会话中的所有下级,找到一个以“远程目标”作为名称,注意它左边的数字(如果在gdb中没有其他下级程序,则为1)(gdb) kill inferiors <number>用劣质数代替<number>。(gdb) quithttps://stackoverflow.com/questions/37731497
复制相似问题