在GDB中执行SegFault之后继续调试吗?

德哈伦

我正在使用GDB调试大型程序,并且程序中存在SegFault。除了重新运行程序外,是否可以切换到先前的堆栈框架并从那里继续执行?

马克·普洛特尼克

至少在Unix和Linux系统上,可以使用gdb的handle命令告诉gdb在收到信号时(带有stop关键字)停止程序,而不是将信号传递给程序(带有nopass关键字)。程序停止时,可以使用return命令从当前帧返回一个值,然后继续执行程序。

$ gdb -q segvtest
Reading symbols from segvtest...done.
(gdb) list 1,99999
1       #include <stdio.h>
2
3       int a()
4       {
5               int *p = 0;
6               return *p;
7       }
8
9       int main()
10      {
11              int i = a();
12              printf("a() returned %d\n", i);
13      }
(gdb) handle SIGSEGV stop nopass
Signal        Stop      Print   Pass to program Description
SIGSEGV       Yes       Yes     No              Segmentation fault
(gdb) run
Starting program: /home/mp/segvtest

Program received signal SIGSEGV, Segmentation fault.
0x00000000080006c0 in a () at segvtest.c:6
6               return *p;
(gdb) return 12345
Make a return now? (y or n) y
#0  0x00000000080006d6 in main () at segvtest.c:11
11              int i = a();
(gdb) c
Continuing.
a() returned 12345
[Inferior 1 (process 74) exited normally]
(gdb)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在bash中的exec之后继续执行脚本

来自分类Dev

在TimeoutException之后继续

来自分类Dev

在构造函数中删除后继续执行

来自分类Dev

在脚本执行Powershell之后继续事件订阅

来自分类Dev

showAndWait javafx之后继续执行程序

来自分类Dev

如何在 Response.End() 之后继续执行代码

来自分类Dev

在 Doctrine ORM 中的 UniqueConstraintViolationException 之后继续持久化实体?

来自分类Dev

在clearInterval()之后继续计数

来自分类Dev

除外后继续执行功能

来自分类Dev

浏览器在“ PageUnload”和新的“ PageLoad”之后继续执行Javascript

来自分类Dev

如果未指定升级,则在WebSocketServerProtocolHandler之后继续管道吗?

来自分类Dev

在Ctrl + C之后继续脚本

来自分类Dev

setInterval在调用clearInterval之后继续运行

来自分类Dev

在第1页之后继续计数

来自分类Dev

发生错误后继续执行代码,以后再用PHP处理吗?

来自分类Dev

如何在Django中的'python manage.py runserver'之后继续输入终端?

来自分类Dev

引发异常后继续执行循环

来自分类Dev

暂停执行Maya python,然后继续

来自分类Dev

等待cftool关闭,然后继续执行

来自分类Dev

网络故障后继续测试执行

来自分类Dev

PL/SQL 处理错误后继续执行

来自分类Dev

Python:If / Elif会问一个问题两次而不是在回答之后继续吗?

来自分类Dev

重试bash脚本中的命令行,直到成功,然后继续执行脚本

来自分类Dev

从Firebase中的多个位置接收到数据后继续执行

来自分类Dev

IIS Express 在调试会话中止后继续运行

来自分类Dev

如何在“ endlocal”之后继续“ setlocal ENABLEDELAYEDEXPANSION”的效果?

来自分类Dev

为什么python在`pass`之后继续评估代码?

来自分类Dev

Azure发布管道,在失败阶段之后继续

来自分类Dev

C ++ do while循环在EOF之后继续进行

Related 相关文章

  1. 1

    在bash中的exec之后继续执行脚本

  2. 2

    在TimeoutException之后继续

  3. 3

    在构造函数中删除后继续执行

  4. 4

    在脚本执行Powershell之后继续事件订阅

  5. 5

    showAndWait javafx之后继续执行程序

  6. 6

    如何在 Response.End() 之后继续执行代码

  7. 7

    在 Doctrine ORM 中的 UniqueConstraintViolationException 之后继续持久化实体?

  8. 8

    在clearInterval()之后继续计数

  9. 9

    除外后继续执行功能

  10. 10

    浏览器在“ PageUnload”和新的“ PageLoad”之后继续执行Javascript

  11. 11

    如果未指定升级,则在WebSocketServerProtocolHandler之后继续管道吗?

  12. 12

    在Ctrl + C之后继续脚本

  13. 13

    setInterval在调用clearInterval之后继续运行

  14. 14

    在第1页之后继续计数

  15. 15

    发生错误后继续执行代码,以后再用PHP处理吗?

  16. 16

    如何在Django中的'python manage.py runserver'之后继续输入终端?

  17. 17

    引发异常后继续执行循环

  18. 18

    暂停执行Maya python,然后继续

  19. 19

    等待cftool关闭,然后继续执行

  20. 20

    网络故障后继续测试执行

  21. 21

    PL/SQL 处理错误后继续执行

  22. 22

    Python:If / Elif会问一个问题两次而不是在回答之后继续吗?

  23. 23

    重试bash脚本中的命令行,直到成功,然后继续执行脚本

  24. 24

    从Firebase中的多个位置接收到数据后继续执行

  25. 25

    IIS Express 在调试会话中止后继续运行

  26. 26

    如何在“ endlocal”之后继续“ setlocal ENABLEDELAYEDEXPANSION”的效果?

  27. 27

    为什么python在`pass`之后继续评估代码?

  28. 28

    Azure发布管道,在失败阶段之后继续

  29. 29

    C ++ do while循环在EOF之后继续进行

热门标签

归档