如何设置正在调试的进程的当前目录?

8
我有一个应用程序,它在调用时对目录非常敏感——使用相对路径加载一些文件。

当我通过调试器启动程序时,如何控制初始当前目录呢?

我想避免向被调试程序添加特殊代码以使其调用 chdir;我的直觉告诉我调试器应该提供一种外部指定的方式,因为这本身就是一种外部设置。

我正在使用的调试器是 TotalView,但我也愿意接受其他 Linux 调试器的答案,因为它可能帮助我在 TV 中找到一个类似的设置。我可以在调用程序时指定环境变量,所以我尝试设置 PWD,但没有成功。

1个回答

8

使用GDB时,初始工作目录是您实例化GDB的目录。因此,只需从您想要的工作目录运行GDB即可。或者,在程序运行时,您可以通过执行以下操作来更改当前工作目录:

(gdb) print chdir("new/working/directory")

GDB还有一个内置命令,可以在GDB提示符下更改进程的工作目录:
(gdb) cd new/working/directory

我从未使用过TotalView,但它应该具有类似的功能,可以在调试器中执行带有副作用的代码。


哇,那真是太容易了。改变我从中启动TotalView的目录就可以了。它还有一个“Evaluate”命令,在工具菜单中运行立即命令,比如chdir。感谢你给了我正确方向上的推动! - Rob Kennedy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接