gpt4 book ai didi

c - 使用 gdb 调试链接库中的函数时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:30 25 4
gpt4 key购买 nike

我正在阅读一些有关 gdb 的资料,但我无法让 gdb(我正在运行 7.11.1)从库中调试函数。
用于了解调试器的示例代码非常简单:

#include <stdio.h>
#include <string.h>

int main() {
char str_a[20];

strcpy(str_a, "Hello, world!\n");
printf(str_a);
}

我在启用调试符号的情况下编译了它,启动了 GDB,并设置了一些断点:

(gdb) list
1 #include <stdio.h>
2 #include <string.h>
3
4 int main() {
5 char str_a[20];
6
7 strcpy(str_a, "Hello, world!\n");
8 printf(str_a);
9 }
(gdb) break 7
Breakpoint 1 at 0x4005ad: file char_array2.c, line 7.
(gdb) break strcpy
Function "strcpy" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 2 (strcpy) pending.
(gdb) break 8
Breakpoint 3 at 0x4005cf: file char_array2.c, line 8.
(gdb) run
Starting program: /home/david/hacking_the_art_of_exploitation/Chapter_2/char_array2

Breakpoint 1, main () at char_array2.c:7
7 strcpy(str_a, "Hello, world!\n");
(gdb) continue
Continuing.

Breakpoint 3, main () at char_array2.c:8
8 printf(str_a);
(gdb) continue
Continuing.
Hello, world!
[Inferior 1 (process 7061) exited normally]

如您所见,调试器永远不会进入 strcpy 函数。

我已经尝试将 set stop-on-solib-events 1 添加到我的 .gdbinit 中。这会导致不同但仍然不受欢迎的结果:

(gdb) run
Starting program: /home/david/hacking_the_art_of_exploitation/Chapter_2/char_array2
Stopped due to shared library event (no libraries added or removed)

我在这里有点不知所措。在此先感谢您的帮助。

最佳答案

我相信您需要 libc-dbg 包和 libc 源包来调试 libc 函数。在 Ubuntu 上,您可以通过以下方式安装它

sudo apt-get install libc6-dbg
mkdir ~/libc ; cd ~/libc
apt-get source libc6

关于c - 使用 gdb 调试链接库中的函数时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com