小编use*_*937的帖子

如何在不退出和丢失断点的情况下在gdb中重新加载重新编译的二进制文件?

根据这份出色的指南,应该能够重新编译源文件,并且只需使用“ r”使gdb开始调试新的,经过更改的二进制文件。

在gdb手册中,这似乎也暗示着:“如果自上次GDB读取符号以来,符号文件的修改时间已更改,则GDB会丢弃其符号表,然后再次读取它。”

我正在尝试在Ubuntu 16.10上调试一个简单的单个.cpp文件。通过编译后g++ -ggdb -std=c++11 589.cpp,我可以照常进行调试。

GNU gdb (Ubuntu 7.11.90.20161005-0ubuntu2) 7.11.90.20161005-git
[...]
(gdb) break main
Breakpoint 1 at 0x2754: file 589.cpp, line 204.
(gdb) r
Starting program: /home/code/589

Breakpoint 1, main () at 589.cpp:204
(gdb) n
(gdb) k
Kill the program being debugged? (y or n) y
Run Code Online (Sandbox Code Playgroud)

在这里,我对源文件进行了较小的更改,然后重新编译。尝试再次运行文件时:

(gdb) r
/home/code/589' has changed; re-reading symbols.
Error in re-setting breakpoint 1: Cannot access memory at address 0x55555555674b
Starting program: /home/code/598
warning: Probes-based dynamic linker …
Run Code Online (Sandbox Code Playgroud)

c++ gdb

8
推荐指数
3
解决办法
4142
查看次数

标签 统计

c++ ×1

gdb ×1