如何在Linux中使用gdb工具

2024-10-17 00:51:51

1、首先通过查看位于/proc目录下一个叫做/proc/$pid/maps的文件,找出全局变量的地址,变量能够位于的地方有堆、栈或者程序的文本段。

如何在Linux中使用gdb工具

2、接着把起始地址5598a9605000和0x5598a9a8f7f0两个数相减,使用nm来查看一下程序的符号表,得到0x48a7f0结果。

如何在Linux中使用gdb工具

3、然后找程序中一个全局变量的地址,在符号表中查找变量的名字再加上在/proc/whatever/maps中的起始地址就可以。

如何在Linux中使用gdb工具

4、接着解引用ruby_current_thread指针,所指向的地址gdb会运行大量系统调用,运行gdb这个进程的ID,gdb使用ptrace这一系统调用来完成这一件事。

如何在Linux中使用gdb工具

5、然后从DWARF得知DWARF是存储额外程序调试数据的一种方式,从而像gdb这样的调试器能够工作的更好。它通常存储为二进制的一部分。如果对Ruby二进制文件运行dwarfdump。

如何在Linux中使用gdb工具

6、最后输出stack_size其中之一,在偏移为24的地方,它有类型31,31可以在DWARF信息中查看。

如何在Linux中使用gdb工具
猜你喜欢