gdb + gdbserver调试时,无法使用Ctrl+C暂停调试的问题

使用gdbserver进行远程调试,跟踪调试板子上的程序时,发现target remote后,想下几个断点,发现ctrl+c无法暂停程序,因此断点也下不了了。只能在连接前,提前下好断点,这明显是恶心的,因为分析问题过程中有随机下断点的需求。但是我记得之前这个程序,在同样的硬件上是可以后期下断点的。google发现有人说是gdbserver bug,其中提到了一个patch https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=78708b7c8ccc2138880217de9bd60eceff683f10. 但是我查看SDK里面gdb的源码,发现是打过这个bug后的样子。另一个地方 https://bugzilla.kernel.org/show_bug.cgi?id=9039 提到 https://github.com/fairyfar/gdb_sigwait 如果应用程序捕获了一些信号,例如SIGINT,会导致gdb的Ctrl+C动作不起作用,Ctrl+C正是发送SIGINT信号的。于是查看我的应用代码,发现我后来确实添加SIGINT的信号处理函数,注释之,问题解决。也可以按照 https://github.com/fairyfar/gdb_sigwait 这里的方式处理。

posted @   thammer  阅读(542)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-08-17 clion2020.2 安装 IntelliJ-EmmyLua 插件后崩溃
2019-08-17 linux 线程优先级
点击右上角即可分享
微信分享提示