一位同事曾经告诉我,在Linux上一切调试失败时,最后的选择是使用strace。我试图学习这种奇怪工具背后的科学知识,但是我不是系统管理员,我并没有真正获得结果。所以,到底是什么,它做什么?应该如何使用?在哪种情况下应使用?应该如何理解和处理输出?总之,在简单的话,请问这个东西工作?
3 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
Strace概述
strace可以看作是轻量级的调试器。它允许程序员/用户快速找出程序如何与OS交互。它通过监视系统调用和信号来做到这一点。
当您没有源代码或不想为真正的源代码而烦恼时,可以使用 Good。
另外,如果您不想打开GDB,而只是想了解外部交互,则对您自己的代码很有用。
前
几天我对strace进行了介绍,这是一个很好的小介绍:strace hello world
largeQ
TA贡献2039条经验 获得超7个赞
简而言之,strace跟踪程序发出的所有系统调用及其返回代码。考虑一下诸如文件/套接字操作之类的事情,以及更多晦涩难懂的事情。
如果您对C有一定的了解,这将非常有用,因为这里的系统调用将更准确地代表标准C库调用。
假设您的程序是/ usr / local / bin / cough。只需使用:
strace /usr/local/bin/cough <any required argument for cough here>
要么
strace -o <out_file> /usr/local/bin/cough <any required argument for cough here>
写入“ out_file”。
所有strace输出都将发送到stderr(请注意,其庞大的体积通常要求重定向到文件)。在最简单的情况下,您的程序将因错误而中止,您将能够在strace输出中查看其与操作系统的最后交互作用。
更多信息应与:
man strace
- 3 回答
- 0 关注
- 534 浏览
添加回答
举报
0/150
提交
取消