c++ - Eclipse C++ 调试可执行文件找不到具有相对路径的文件

标签 c++ eclipse makefile

<分区>

我有一个包含更多 makefile 的项目。在某些特定文件夹中,有一些 makefile 可以创建二进制文件/可执行文件。我右键单击 makefile 并执行 Make Tarkgets -> Build -> all,这样我就可以在那里获得可执行文件。如果我从控制台运行可执行文件,它工作正常,但如果我右键单击它并 Debug as -> Local C/C++ Application,它运行但在某些时候它正在读取具有相对路径的文件:

FILE *f = fopen(fName, "rb"); // fname is a relative path : ../../../path/to/file

if(f == NULL)
{
    perror(fName);
    exit(2);
}

它没有找到它;指针为空/NULL。在我看来,Eclipse 似乎是从打开项目的地方搜索文件,而不是从可执行文件所在的地方搜索文件。我想这是因为如果我从创建可执行文件的 makefile 创建一个项目,它会工作,它会找到该文件。但是从那个地方我看不到源代码,因此,为了放置断点,我必须一步一步地运行,直到我到达正确的位置/正确的源代码。

谁能帮我解决这个问题?有没有办法让它从可执行文件所在的位置搜索文件?谢谢

附言: 我见过this post ,它很相似,但它并没有指出任何东西......

最佳答案

我想这两种情况下的工作目录都不同,这就是您无法打开文件的原因。尝试为 fopen() 使用绝对路径,或寻找一种方法为第二种情况指定正确的工作目录。

有一种方法可以修改工作目录,如this answer所述:

  • 右键单击二进制文件/可执行文件 Debug As -> Debug Configuration ...
  • Arguments 选项卡的底部,有一个 Working directory: 区域,取消选中 Use default 并添加正确的路径 (可执行文件/二进制文件在哪里)。 Workspace...File System... 按钮可能有帮助

关于c++ - Eclipse C++ 调试可执行文件找不到具有相对路径的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38896237/

相关文章:

java - 如何保存 Eclipse Natures 项目的自定义对象?

makefile - 如何修复 "debian-rules-is-dh_make-template"?

bash - 这个 makefile 片段中的 "$$?"是什么意思?

c++ - GPU 加速 LK 金字塔中的窗口大小限制

c++ - NAPI AsyncWorker:在不使用大 for 的情况下将指针数组转换为 Napi::Array?

android - 为什么android找不到com.google.gson.Gson

c++ - 在 Linux 上构建 c++ 包时 autogen.sh 的作用是什么

c++ - 来自 dlsym 的 std::function 导致段错误

c++ - 无法为非 root 用户加载 libsctp.so

java - 在 Android 中创建 JSON