调试器gdb
找不到我的本地.gdbinit
文件,而只能找到-cd
参数指向的文件夹中的文件。
启动时本地文件夹中没有文件时,不会显示任何警告:
/home/mydir/sources $ rm .gdbinit
/home/mydir/sources $ gdb --cd /home/mydir/apprundir
(output omited)
但是,如果我们在启动该文件的当前文件夹中创建一个.gdbinit
文件,它将检测到它存在,但没有加载它,而是显示“警告:.gdbinit:没有这样的文件或目录“ 。
/home/mydir/sources $ > .gdbinit
/home/mydir/sources $ gdb -cd /home/mydir/apprundir
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 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 redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
warning: .gdbinit: No such file or directory
是否还有其他方法可以通过gdb命令行参数来设置cmd文件?但是通过环境变量或其他任何外部方式?我无法将参数传递给gdb,因为它是由第三方脚本启动的,并且无法在应用程序主文件夹中创建文件。
PS:我的最后一个选择是将所有命令放入$ HOME / .gdbinit文件中,但我避免这样做,因为还有其他开发环境共享同一$ HOME / .dbginit文件
答案 0 :(得分:1)
我找到了解决我们所有问题的方法。它被称为 rr 调试器:
首先,它是 gdb 的直接替代品,这意味着它应该可以与 Codelite 之类的 IDE 一起使用,并且设置最少。
其次,它是可逆的!可逆计算是一个理论领域,但显然他们通过存储和重放所有相关代码指令来实现这一点。
您知道,当您在调试某些东西时,您会想,嗯,回到这个或那个断点会很好,他们终于使之成为可能!
答案 1 :(得分:0)
warning: .gdbinit: No such file or directory
几乎可以肯定,这是GDB中的一个错误-我希望它从通过.gdbinit
参数指定的目录中读取-cd DIR
。 Documentation说:
5. Processes command line options and operands.
6. Reads and executes the commands from init file (if any) in the current working directory ...
从逻辑上讲,该时间点的当前工作目录应为DIR
。
我的最后一个选择是将所有命令放在
$HOME/.gdbinit
文件中,但我避免这样做,因为还有其他开发环境共享同一$HOME/.dbginit
文件
如果您的非古德GDB带有嵌入式Python,则可以将source ~/.gdbinit.py
放入~/.gdbinit
中。在~/.gdbinit.py
中,您可以使用Python的全部功能。您可以检查环境,参数(包括要调试的二进制文件),并针对特定环境 适当调整设置。