我不在gdb的目标可执行文件中,也没有一个对应于该目标的堆栈。但我仍想进行单步调试,以便验证我的汇编代码的运行情况,因为我不是x86汇编方面的专家。不幸的是,gdb拒绝进行这种简单的汇编级别的调试。它允许我设置并停止适当的断点,但只要我尝试单步向前,gdb就报错“找不到当前函数的边界”,而EI...
我做错了什么(或者没有做)导致 gdb 对我来说无法正常工作?root@6be3d60ab7c6:/# cat minimal.c int main() { int i = 1337; return 0; } root@6be3d60ab7c6:/# gcc -g minimal.c...
我有一个函数被调用了很多次,最终导致了段错误。 然而,我不想在这个函数处设置断点,并在每次函数调用后停止程序的执行,因为那样会需要很长时间。 听说我可以在GDB中为断点设置一个计数器,每次命中该断点时,计数器就减1,只有当计数器值为0时才触发断点。 如果是这样的话,请问如何实现呢?请给出...
无论是还是在调试我的设备(oppo r7s)时都缺少了一些共享库。我已经将所有库文件都拷贝到本地。 下面是info shared显示的完整库文件列表。 (gdb) info shared From To Syms Read Shared Object Li...
在gdb中,是否可以跳转到当前执行行之前的某一行。 void my_fun( somePtrType** arr,int start,int end) { // arr is an array of pointers to somePtrType //line a ... some a...
我通常使用以下命令来运行我的程序:perl -e 'print "A"x200' | ./vuln_prog C++中的gets()函数会使用标准输入流(stdin)。 如果这只是一个命令参数,我可以通过以下方式打开gdb:gdb ./vuln_prog run $(perl -e 'pri...
GDB是否有内置的脚本机制,我应该编写expect脚本,还是有更好的解决方案? 每次我都将发送相同的命令序列,并将每个命令的输出保存到文件中(最可能使用GDB的内置日志记录机制,除非有更好的建议)。
在编写C/C++代码时,为了调试二进制可执行文件,必须在编译器/链接器上启用调试选项。对于GCC而言,该选项是-g。当启用调试选项时,它会如何影响二进制可执行文件?文件中存储了哪些附加数据,使得调试器能够像它所做的那样运行?