105得票3回答
使用gdb单步执行指定可执行文件之外的汇编代码会导致错误“无法找到当前函数的边界”

我不在gdb的目标可执行文件中,也没有一个对应于该目标的堆栈。但我仍想进行单步调试,以便验证我的汇编代码的运行情况,因为我不是x86汇编方面的专家。不幸的是,gdb拒绝进行这种简单的汇编级别的调试。它允许我设置并停止适当的断点,但只要我尝试单步向前,gdb就报错“找不到当前函数的边界”,而EI...

103得票2回答
在gdb中保存核心文件

使用gdb,能否保存/转储核心文件?有时我希望将文件保存以便以后分析。

102得票3回答
警告:禁用地址空间随机化错误:操作不允许。

我做错了什么(或者没有做)导致 gdb 对我来说无法正常工作?root@6be3d60ab7c6:/# cat minimal.c int main() { int i = 1337; return 0; } root@6be3d60ab7c6:/# gcc -g minimal.c...

102得票2回答
如何使GDB断点仅在达到给定次数后触发?

我有一个函数被调用了很多次,最终导致了段错误。 然而,我不想在这个函数处设置断点,并在每次函数调用后停止程序的执行,因为那样会需要很长时间。 听说我可以在GDB中为断点设置一个计数器,每次命中该断点时,计数器就减1,只有当计数器值为0时才触发断点。 如果是这样的话,请问如何实现呢?请给出...

98得票1回答
Android ndk gdb 加载的共享库缺少 *.oat 文件。

无论是还是在调试我的设备(oppo r7s)时都缺少了一些共享库。我已经将所有库文件都拷贝到本地。 下面是info shared显示的完整库文件列表。 (gdb) info shared From To Syms Read Shared Object Li...

97得票9回答
如何在GDB中回到前一行?

在gdb中,是否可以跳转到当前执行行之前的某一行。 void my_fun( somePtrType** arr,int start,int end) { // arr is an array of pointers to somePtrType //line a ... some a...

97得票1回答
gdb - 使用管道输入(而不是参数)进行调试

我通常使用以下命令来运行我的程序:perl -e 'print "A"x200' | ./vuln_prog C++中的gets()函数会使用标准输入流(stdin)。 如果这只是一个命令参数,我可以通过以下方式打开gdb:gdb ./vuln_prog run $(perl -e 'pri...

95得票4回答
如何使用GDB检查堆栈帧?

目前我一直在使用GDB反汇编二进制文件并检查不同的寄存器等等。是否有一个简单的命令可以检查堆栈上的所有内容?这样可以限制到函数内的所有内容吗?

91得票3回答
如何自动化 GDB 调试会话的最佳方法?

GDB是否有内置的脚本机制,我应该编写expect脚本,还是有更好的解决方案? 每次我都将发送相同的命令序列,并将每个命令的输出保存到文件中(最可能使用GDB的内置日志记录机制,除非有更好的建议)。

91得票7回答
调试选项-g如何改变二进制可执行文件?

在编写C/C++代码时,为了调试二进制可执行文件,必须在编译器/链接器上启用调试选项。对于GCC而言,该选项是-g。当启用调试选项时,它会如何影响二进制可执行文件?文件中存储了哪些附加数据,使得调试器能够像它所做的那样运行?