如何在Eclipse CDT中的gdb中调用时使调试的应用程序找到共享库?

时间:2010-05-14 13:04:48

标签: linux gdb shared-libraries eclipse-cdt

我正在尝试在Linux x86_64(Ubuntu Karmic)上调试Eclipse CDT中的Firefox主干。

我做了以下事情:

  • 我在项目级运行/调试配置的源窗格中创建了从/到/每个DevMo的路径映射。
  • 我已将/ opt / Projects / obj-debug / dist / bin / firefox-bin设置为主窗格中的C ++应用程序。 (我的Firefox obj目录是/ opt / Projects / obj-debug)
  • 我已将工作目录设置为Arguments面板中的/ opt / Projects / obj-debug / dist / bin
  • 我在Arguments窗格中将参数设置为-no-remote -P dev
  • 在“环境”窗格中,我已根据run-mozilla.sh的操作设置环境以附加以下内容:
    • ADDON_PATH:/ opt / Projects / obj-debug / dist / bin
    • 显示:: 0.0
    • DYLD_LIBRARY_PATH:/ opt / Projects / obj-debug / dist / bin:/ opt / Projects / obj-debug / dist / bin
    • LD_LIBRARY_PATH:/ opt / Projects / obj-debug / dist / bin:/ opt / Projects / obj-debug / dist / bin / plugins:/ opt / Projects / obj-debug / dist / bin
    • LIBPATH:/ opt / Projects / obj-debug / dist / bin:/ opt / Projects / obj-debug / dist / bin
    • LIBRARY_PATH:/ opt / Projects / obj-debug / dist / bin:/ opt / Projects / obj-debug / dist / bin / components:/ opt / Projects / obj-debug / dist / bin
    • MOZILLA_FIVE_HOME:/ opt / Projects / obj-debug / dist / bin
    • NO_EM_RESTART:1
    • NO_REMOTE:1
    • SHLIB_PATH:/ opt / Projects / obj-debug / dist / bin:/ opt / Projects / obj-debug / dist / bin
  • 在调试器窗格中,我有
    • 选择gdb调试器
    • 我已将gdb可执行文件设置为gdb,将.gdbinit设置为/home/hsivonen/.gdbinit

以上就足以使用Run成功启动Firefox。但是,在使用Debug启动时,我在控制台中获得了这一行: /opt/Projects/obj-debug/dist/bin/firefox-bin: error while loading shared libraries: libmozalloc.so: cannot open shared object file: No such file or directory

我还试图将相关路径放在Debugger窗格的共享库子窗格中,我试图把它放到 我的.gdbinit中的set solib-search-path /opt/Projects/obj-debug/dist/bin/components:/opt/Projects/obj-debug/dist/bin/plugins:/opt/Projects/obj-debug/dist/bin

没有运气。

在调试应用程序时,如何找到共享库?

1 个答案:

答案 0 :(得分:0)

我经常成功地设法使用CDT调试器:

    从终端
  1. ,为要调试的二进制文件设置工作环境(导出LD_LIBRARY_PATH等)
  2. 相同的终端,启动eclipse(eclipse将继承环境)
  3. 来自eclipse,选择“Makefile Project With Existing Code”并导入您的文件夹
  4. 从左侧窗格中选择
  5. ,然后右键单击:Debug As→C / C ++ Application。