当使用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
我用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中调试程序时,我想知道参数是如何传递的。
例如,当我像这样使用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呢?我能做什么额外的检查来定位这个问题呢?
我想知道通过在reset上使用移动赋值操作符来编写A类的一个this方法是否安全。
所以而不是
A a{};
... // Do something with a
a = A();
如果我能写
A a{};
... // Do something with a
a.reset();
哪里
void A::reset()
{
*this = A();
}
我在戈德螺栓( )上玩了一会儿,结果调试程序集与本例中的gdb几乎相同。