gpt4 book ai didi

linux - 如何获取相对路径的cwd?

转载 作者:IT王子 更新时间:2023-10-29 01:00:11 24 4
gpt4 key购买 nike

对于使用相对路径调用的系统调用,如何在 strace 输出中获取当前工作目录?我正在尝试调试生成多个进程但无法打开特定文件的复杂应用程序。

stat("some_file", 0x7fff6b313df0) = -1 ENOENT (No such file or directory)

由于 some_file 存在,我相信它位于错误的目录中。我也曾尝试跟踪 chdir 调用,但由于输出是交错的,因此很难以这种方式推断出工作目录。有没有更好的办法?

最佳答案

您可以使用 -y选项,它将打印完整路径。在这种情况下另一个有用的标志是 -P它只跟踪与特定路径相关的系统调用,例如

strace -y -P "some_file"

不幸的是-y只会打印文件描述符的路径,并且由于您的调用不加载任何它没有一个。一种可能的解决方法是在调试器中运行该系统调用时中断进程,然后您可以通过检查 /proc/<PID>/cwd 来获取其工作目录.像这样的东西(完全未经测试!)

gdb --args strace -P "some_file" -e inject=open:signal=SIGSEGV

或者您可以使用条件断点。像这样的东西应该 工作,但我很难让 GDB 在 fork 之后跟随子进程。如果你只有一个过程,我想应该没问题。

gdb your_program
break open if $_streq((char*)$rdi, "some_file")
run
print getpid()

关于linux - 如何获取相对路径的cwd?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29520936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com