GDB调试中将信号发送给程序的方法
2016-12-04 00:32
519 查看
文章来源:http://blog.csdn.net/xzz_hust/article/details/8894836
在看CSAPP的chapter 8 Exceptional Control Flow时发现用GDB调试程序时程序无法接收到ctrl-c发送的终止信号, 上网查了一下, 原来是因为GDB默认会截获信号, 使调试程序无法接收到信号, 要使调试程序能够接收到信号有两种办法:
(1)改变gdb信号处理的设置
比如,以下设置会告诉gdb在接收到SIGINT时不要停止、打印出来、传递给调试目标程序
=====================================
(gdb) handle SIGINT nostop print pass
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) y
Signal Stop Print Pass to program Description
SIGINT No Yes Yes Interrupt
(gdb)
=====================================
(2)使用gdb命令直接向调试的应用程序发送信号
首先在你希望发送信号的语句处设置断点,然后运行程序,当停止到断点所在位置后,用gdb的signal命令发送信号给调试目标程序
====================================
(gdb) signal SIGINT
Continuing with signal SIGINT.
Breakpoint 1, handler (signal=2) at main.cpp:15
15 printf("Signal handler...\n");
====================================
参考文章:
http://bbs.csdn.net/topics/50456838
http://stackoverflow.com/questions/553956/debugging-a-segmentation-fault-when-i-do-ctrl-c
在看CSAPP的chapter 8 Exceptional Control Flow时发现用GDB调试程序时程序无法接收到ctrl-c发送的终止信号, 上网查了一下, 原来是因为GDB默认会截获信号, 使调试程序无法接收到信号, 要使调试程序能够接收到信号有两种办法:
(1)改变gdb信号处理的设置
比如,以下设置会告诉gdb在接收到SIGINT时不要停止、打印出来、传递给调试目标程序
=====================================
(gdb) handle SIGINT nostop print pass
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) y
Signal Stop Print Pass to program Description
SIGINT No Yes Yes Interrupt
(gdb)
=====================================
(2)使用gdb命令直接向调试的应用程序发送信号
首先在你希望发送信号的语句处设置断点,然后运行程序,当停止到断点所在位置后,用gdb的signal命令发送信号给调试目标程序
====================================
(gdb) signal SIGINT
Continuing with signal SIGINT.
Breakpoint 1, handler (signal=2) at main.cpp:15
15 printf("Signal handler...\n");
====================================
参考文章:
http://bbs.csdn.net/topics/50456838
http://stackoverflow.com/questions/553956/debugging-a-segmentation-fault-when-i-do-ctrl-c
相关文章推荐
- GDB调试中将信号发送给程序的方法
- linux环境下GDB与core dump调试程序方法
- Android gdbserver远程调试native程序方法
- gdb调试带参数的console程序方法
- C/C++程序在GDB调试状态时的信号响应
- Linux下,使用GDB调试程序的方法
- linux应用编程笔记(1)gdb调试方法及如何找出dbg.c程序中的错误
- linux gdb运行不下去的程序调试方法
- linux应用编程笔记(1)gdb调试方法及如何找出dbg.c程序中的错误
- Linux下使用GDB调试程序的方法
- 使用gdb调试网络程序时,收到SIGPIPE信号异常退出问题
- 关于使用gdbserver和eclipse共同调试一个嵌入式程序的方法大纲
- GDB调试带有信号的程序
- linux 下C/C++程序常用调试方法(gdb)
- GDB 调试带参数程序的方法int main(int argc,char *argv[])
- Linux 程序CoreDump -- GDB调试方法汇总
- 用GDB调试程序(二)
- 用GDB调试程序
- 用GDB调试程序(一)
- 用GDB调试程序(四)