我用python编写了新的方便函数(greet.py),以便在GDB上使用它。
class Greet (gdb.Function):
"""Return string to greet someone.
Takes a name as argument."""
def __init__ (self):
super (Greet, self).__init__ ("greet")
def invoke (self, name):
return "H
当使用gdb (gdb main)调试程序时,它显示了大量的学分和链接。我知道我们可以使用quiet参数来禁用这个文本,但是我想永久地禁用它。gdb是否有init文件或其他任何东西来更改gdb的行为?
而不是:
$ gdb main
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and
调用约定很复杂,有时当我在GDB中调试程序时,我想知道参数是如何传递的。
例如,当我像这样使用call指令时:
call nicefun(7)
我希望GDB能给我写这样的东西:
I put 7 in rdi.
有这样的选择吗?当然,检查7是如何通过是很容易的,但事情变得复杂的大结构,va_list,等等.
在用线程调试程序时,我有一个奇怪的错误:
(gdb) info threads
warning: unable to open /proc file '/proc/3663/status'
warning: Can't attach LWP 3663: No child processes
Cannot find new threads: debugger service failed
在调试会话期间,我没有收到其他警告。
进程/线程3663不存在。
gdb怎么会误解进程/线程的pid呢?我能做什么额外的检查来定位这个问题呢?