6

是否可以查看行号和文件名(对于使用 ltrace/strace 运行的程序)以及库调用/系统调用信息。

例如:

code section :: ptr = malloc(sizeof(int)*5); (file:code.c, line:21)

ltrace 或任何其他工具: malloc(20) :: code.c::21

我已经尝试了 ltrace/strace 的所有选项,但无法找到获取此信息的方法。

如果不能通过 ltrace/strace,我们是否有任何适用于 GNU/Linux 的并行工具选项?

4

3 回答 3

6

您可以使用 and 中的-i选项(在调用时输出指令指针),straceltrace结合addr2line来解析对代码行的调用。

于 2011-07-24T10:53:54.193 回答
1

不,这是不可能的。你为什么不为此目的使用 gdb 呢?

当您使用 gcc 编译应用程序时,使用 -ggdb 标志将调试器信息获取到您的程序中,然后使用 gdb 或等效前端(ddd 或类似)运行您的程序

这是一个快速的 gdb 手册,可以帮助你一点。 http://www.cs.cmu.edu/~gilpin/tutorial/

于 2011-07-24T09:53:16.600 回答
0

您可以使用 strace-plus 收集与每个系统调用关联的堆栈跟踪。 http://code.google.com/p/strace-plus/

于 2013-09-12T13:09:01.243 回答