Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个对调用它的目录很敏感的应用程序——它使用相对路径加载一些文件。
当我通过调试器启动程序时,如何控制初始当前目录是什么?
我宁愿避免向调试程序添加特殊代码以使其调用chdir;我的直觉是调试器应该提供某种方式来从外部指定它,因为它本质上是一个外部设置。
chdir
我使用的调试器是 TotalView,但我愿意接受其他 Linux 调试器的答案,因为它可以帮助我在 TV 中找到类似的设置。我可以在调用程序时指定环境变量,所以在云雀上,我尝试了设置PWD,但没有运气。
PWD
对于 GDB,初始工作目录是您从中实例化 GDB 的目录。因此,只需从您想要的工作目录中运行 GDB。或者,在程序运行时,您只需执行以下操作即可更改当前工作目录:
(gdb) print chdir("new/working/directory")
GDB 还有一个内置命令,用于从 GDB 提示符更改进程的工作目录:
(gdb) cd new/working/directory
我从未使用过 TotalView,但它应该具有类似的功能,可以在调试器中执行代码(有副作用)。