当前位置:  开发笔记 > 编程语言 > 正文

GDB如何在没有断点的情况下停止执行?

如何解决《GDB如何在没有断点的情况下停止执行?》经验,为你挑选了4个好方法。

如何在没有断点的情况下停止gdb执行?



1> luke..:

只需使用常规中断Ctrl- c将正常工作.GDB只是转发SIGINT到调试过程然后死掉.GDB将捕获非标准退出并在那里中断进程,因此您仍然可以检查所有线程,它们的堆栈和变量的当前值.这样可以正常工作,但使用断点会更好.我发现自己这样做的唯一一次是,如果我认为我已经进入某种无限循环.


`^ c`对我不起作用,因为我的应用程序抓住了它并优雅地死掉了。还有其他建议吗?

2> 小智..:

GUI应用程序不会对^ C和^做出反应,这会破坏控制台应用程序的运行方式.从那时起,大多数非平凡项目往往是GUI应用程序或主要用于GUI应用程序的库,您有两种选择:

    从单独的终端发送SIGSTOP到应用程序.这很麻烦.

    如果在GDB提示符下按^ C或^ Break,GDB将终止,但应用程序将继续运行.然后,您可以再次运行GDB以使用-p命令行开关连接到它.这会丢失调试器状态.

在这两种情况下,您可能会发现这有用:您可以修改它以在shell脚本,makefile中使用或发送信号而不是附加GDB.tasklist | grepProcessName| sed -e 's/ProcessName*\([0-9]*\).*/gdbModuleName-pid=\1/' > rungdb.sh

info threads将帮助您找出您想要查看的线程.然后用threadThreadNumber它切换到它.





它切换到它.

3> Chris Allwei..:

只需输入BREAK即可.

Break,在没有任何参数的情况下调用时,break在下一条要在所选堆栈帧中执行的指令处设置断点


在gdb的上下文中,运行,停止,步进。这正是我需要的“停止”方式,gdb文档中对此进行了解释。+1

4> zvrba..:

启动shell,使用ps查找进程ID,并使用kill命令发送SIGSTOP或SIGINT(例如kill -INT pid).

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有