首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gdb调试时要彻底退出

使用gdb调试时要彻底退出
EN

Stack Overflow用户
提问于 2016-06-09 16:26:20
回答 3查看 4.4K关注 0票数 18

我正在调试一个程序,使用valgrind和gdb。但是,我以野蛮的方式终止这些调试会话(…)。是否真的要这样做呢?

设置调试会话

按照官方网站的说明,我执行以下操作来运行该程序:

  1. 我以进场的方式跑了 valgrind工具=memcheck-vgdb=yes-error= ./prgm.run
  2. 在另一个终端会话中,我使用 gdb ./prgm.run
  3. 我把gdb和val研联系起来。 (gdb)目标远程vgdb
  4. 我从gdb CLI运行程序。 (gdb) c

到目前为止,这个程序运行在两个终端中(一个用于valgrind,另一个用于gdb)。然后val差尔发现一个错误,例如无效的读取,程序执行暂停。

终止会话

在这一点上,我想摆弄我的代码:也许修复一些东西,或者注释/取消程序的源代码。因此,该程序需要重新编译。生成一个新的二进制文件。在此之后,我希望停止正在进行的val差事和gdb会话(使用旧的二进制文件),并启动使用新二进制文件的新val差事和gdb会话。

为了停止正在进行的会话,我退出了gdb。

代码语言:javascript
复制
(gdb) q

有时候,val差尔注意到gdb已经不在了,并且也退出了。但也有一些时候,伐研甚至还在继续--尽管不再存在gdb进程,…。

在这种情况下,我杀死了对应于我的val研会话的“memcheck 64-”过程。该过程的数量在val差发消息中表示,例如,16195==16195== Invalid read of size 8中)。

代码语言:javascript
复制
kill -9 16195

一个常规的杀死是不够的:我需要使用-9选项。

我不认为调用kill -9是为了实现…我漏掉了什么吗?

版本: 3.10.1

gdb版本: 7.7.1

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-09 20:43:30

您也可以使用comand

代码语言:javascript
复制
(gdb)monitor v.kill

它被列在gdb的监视器帮助上。

票数 20
EN

Stack Overflow用户

发布于 2022-05-15 17:44:11

只需使用kill命令或简单地

代码语言:javascript
复制
k
  • 要摆脱询问,请在set confirm off文件中使用.gdbinit
票数 2
EN

Stack Overflow用户

发布于 2018-09-06 23:01:03

以前的答案对我没有用,所以我找到了

  1. (gdb) info inferiors应该列出gdb会话中的所有下级,找到一个以“远程目标”作为名称,注意它左边的数字(如果在gdb中没有其他下级程序,则为1)
  2. (gdb) kill inferiors <number>用劣质数代替<number>
  3. (gdb) quit
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37731497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档