【发布时间】:2019-08-12 20:44:24
【问题描述】:
我正在尝试调试为什么 ngspice 在运行模拟时将烦人的换行符打印到 stderr。我试图在可追溯到 1993 年的 2400 个源文件之一中找到它,但这并不像听起来那么容易!然而,这确实意味着我有一个嵌入了所有调试信息的二进制文件。
我的第一个想法是strace 可以帮助我找到我认为有问题的调用并将其追溯到源代码。例如,我很确定这是有问题的系统调用:
brk(0x55d1a84e9000) = 0x55d1a84e9000
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {tv_sec=0, tv_nsec=61462905}) = 0
>> write(2, "\n", 1) = 1
getrusage(RUSAGE_SELF, {ru_utime={tv_sec=0, tv_usec=26269}, ru_stime={tv_sec=0, tv_usec=35243}, ...}) = 0
openat(AT_FDCWD, "/proc/self/statm", O_RDONLY) = 3
我曾希望,如果我跟踪一个包含调试信息的可执行文件,strace 会显示源代码中的位置,但这并没有自动发生,而且手册有点让人不知所措。
我在手册中找到了一个名为 Tracing 的部分,但找不到任何具体内容。
strace 是否可以,如果可以:如何?如果没有,您还有其他建议吗?
【问题讨论】: