如何使用eclipse调试libtool生成的脚本?

时间:2011-11-16 13:22:50

标签: eclipse-cdt libtool

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

我也许可以在项目目录的./libs中运行实际的可执行文件,但是我必须手动设置LD_LIBRARY_PATH和类似的东西......必须有更好的方法来这样做。

任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:2)

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. 创建新的构建配置
  5. configure|Advanced下,使用--disable-shared

  6. 填写“其他命令行选项”

答案 1 :(得分:2)

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

转到调试配置的环境选项卡,并创建一个名为LD_LIBRARY_PATH的新环境变量。您将要将.libs目录附加到路径中。因此,值应如下所示:${project_loc}/.libs:$LD_LIBRARY_PATH假设您的.libs文件夹位于项目目录中。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

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

我正在Windows和Linux下开发,所以这是我自己需要的东西。

有一些棘手的问题,比如在libtool和gdb调用中获取路径..关闭以获取swat。

干杯,杰里。

答案 4 :(得分:1)

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

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