5

我试图查看 Wireshark 的源代码以了解协议分析,但我发现当我只是使用gdb ./wireshark时,当我按Ctrl+C并设置断点,然后键入C时,进程就死了。我想知道 libtool 做了什么来使 GDB 调试成为可能。

我已经读过它说 libtool 是一种工具,可以通过简单的界面man libtool轻松使用各种工具,但我不知道使用 libtool 的关键是什么。.a.ogdb wireshark

4

1 回答 1

5

当您使用 libtool 构建程序时,它将处理在您的平台中使用共享库的所有困难和特殊性。

困难之一是调试,因为在调试时您想加载系统中安装的共享库(它们只是编译)。因此,当 libtool 构建可执行文件时,它会将其移动到隐藏目录 ( .libs) 中,并且通常会在您可以看到的地方放置一个同名的脚本或类似文件。该脚本将尽一切努力使用正确的库运行正确的程序。

但是,显然您不能使用gdb! 因此,为了传递正确的参数以gdb使其能够使用正确的库调试正确的程序,您必须运行以下命令:

$ libtool --mode=execute gdb ./wireshark

您可以通过运行查看它的作用:

$ libtool --mode=execute echo ./wireshark

只是不要.libs直接使用文件:使用 alwayslibtool或包装脚本。

于 2012-06-15T10:02:37.143 回答