【问题标题】:how can I use eclipse to debug a libtool generated script?如何使用 eclipse 调试 libtool 生成的脚本?
【发布时间】:2011-12-30 10:37:03
【问题描述】:

我有一个使用 libtool 构建的大型 c++ 项目。问题是 eclipse 不会运行 libtool 生成的脚本,并且我得到“程序不是可识别的可执行文件”。错误信息。如何使用 Eclipse 调试器?我目前正在使用 kdevelop3 作为编辑器并使用洞察力进行调试.. 这太可怕了。

我也许可以运行实际的可执行文件,它位于项目目录的 ./libs 中,但是我必须手动设置 LD_LIBRARY_PATH 之类的东西......必须有更好的方法来做到这一点。

任何帮助将不胜感激!

【问题讨论】:

  • 更新:好吧,最终我没有其他选择,只能自己手动设置所有环境变量(LD_LIBRARY_PATH 等)。这当然是一个不好的做法,因为这些最终可能会改变,但我没有找到其他办法..

标签: eclipse-cdt libtool


【解决方案1】:

您可以通过运行实际的可执行文件而不是 libtool 脚本来解决此问题。可执行文件通常位于.libs/。因此,在主选项卡上的调试配置中,将C/C++ Application 的值设置为.libs/my_application 之类的值。然后,您只需在调试配置中更新LD_LIBRARY_PATH

转到调试配置的环境选项卡并创建一个名为LD_LIBRARY_PATH 的新环境变量。您需要将.libs 目录附加到路径中。所以值应该是这样的:${project_loc}/.libs:$LD_LIBRARY_PATH 假设你的.libs 文件夹就在项目目录中。

【讨论】:

    【解决方案2】:

    你需要说服 eclipse 像这样启动 gdb:

    $ libtool --mode=execute gdb <your-program>
    

    https://www.gnu.org/s/libtool/manual/html_node/Debugging-executables.html

    【讨论】:

    • 是的,当然可以,但是怎么做?我尝试了很多事情,包括更改调试器命令行,但无济于事。
    【解决方案3】:

    对于第一点,您可以通过在您的Makefile.am 中添加-no-installLDFLAGS 来禁用中间libtool 脚本,或者您可以只运行make install 并从已安装的二进制文件中进行调试。

    对于第二点,您必须在启动 eclipse 之前设置和导出您的 LD_LIBRARY_PATH

    【讨论】:

      【解决方案4】:

      Eclipse 仍然不支持运行脚本而不是可执行文件,请参阅this bug。在引入该功能之前,您无法在 Eclipse 下调试启用 libtool 的项目,除非您保留类似

          path/to/configure --disable-shared
      

      单独配置,因此仅出于调试目的而依赖静态链接。

      要做到这一点,你

      1. 从顶部菜单打开Project|Properties

      2. 从窗口左侧菜单中选择Autotools|Configure Settings

      3. (可选)使用专用C/C++ Build|Builder Settings|Build location创建新的构建配置

      4. configure|Advanced 下,用--disable-shared 填写“附加命令行选项”

      【讨论】:

      • 谢谢,但我仍然需要自己指定库的路径,不是吗?
      • 不,你不会,因为它们是静态链接的。当然还有其他缺点:每次更改库时,都需要重新编译可执行文件;此外,可执行文件非常臃肿。
      • 首先违背了拥有 libtool 的目的之一。不过,+1 是一个可行的解决方案。
      【解决方案5】:

      我认为可以编写一个小包装程序来插入 'sh libtool --mode execute' 的 exec 来运行 gdb。将其称为“gdb-libtool”并调用它而不是 gdb。

      我同时在 Windows 和 Linux 下进行开发,所以这是我自己需要的。

      有一些棘手的地方,比如在 libtool 和 gdb 调用中获取正确的路径.. 去尝试一下。

      干杯,杰瑞。

      【讨论】:

      • 不:Error creating session Cannot run program "gdb-libtool": Unknown reason –
      猜你喜欢
      • 2011-12-29
      • 1970-01-01
      • 2012-08-22
      • 2010-12-04
      • 2010-11-07
      • 1970-01-01
      • 2016-10-25
      • 2013-08-11
      • 1970-01-01
      相关资源
      最近更新 更多