在我正在处理的项目中,我使用 gdb 进行调试 - 我希望能够从 gdb 调用 make
- 但我不能,因为那意味着工作目录将是不正确。这是我的目录布局和我尝试过的两个选项:
Project
├─bin
│ ┗━Option 1
├─build
│ ├─debug.sh
│ ┟─makefile
│ ┗━Option 2
├─include
└─src
这是使用选项 1
的debug.sh
的内容
#!/bin/bash
gdb --cd=../bin ../bin/ProjectBinary -ex run
选项 1:
当我调用 ./debug
时,程序正确运行 - 工作目录正确设置为 Project/bin
。但是我无法从 gdb 调用 make
,因为 makefile 不在当前目录中。
选项 2(debug.sh
未显示):
当我调用 ./debug
时,程序失败,因为工作目录设置不正确 - 但我可以从 gdb 成功调用 make
。
我如何获得两全其美并允许它,以便我可以从 gdb 调用 make
,以及工作目录对于可执行文件是正确的 - 即我如何有 2 个工作目录,一个用于被调试的程序,一个用于 gdb 本身?
最佳答案
留在 bin/ 但将 "-c"选项传递给 make 以便它切换到 ../build 首先
$ cd ./bin
$ gdb ProjectBinary
(gdb) make -C ../build
您还可以创建调用 build/Makefile
的 bin/Makefile
:
bin/生成文件
.PHONY: all
all:
make -C ../build
(在调用 make 的行的开头将空格更改为制表符)
然后运行:
$ gdb ProjectBinary
(gdb) make
关于linux - GDB 和调试进程的独立工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16264671/