列出对我的图书馆的所有呼叫

问题描述

| 我正在用C建立一个共享库,其他程序会使用它。有时,这些其他程序由于共享库中的某些错误而崩溃。在重现这些类型的错误时,对我来说,了解我的库中的哪些函数,带有什么参数和以什么顺序被调用非常有用。当然,我可以向所有函数添加“ 0”调用,或者为所有函数添加断点,但是我认为必须有一种更好的方法来确定此点。 编辑:由于我在OSX上执行此操作,因此dtrace和相关脚本dapptrace似乎很有希望。但是,在浏览了一些文档之后,我仍然有些迷失。 说,我的库是/path/to/libmystuff.so,并且我有一个程序测试链接到该库。使用dtrace,我如何调出libmystuff.so中驻留的所有函数调用的列表?     

解决方法

如果您在Linux系统上工作,则可以使用ѭ1来实现此目的。原始海报在下面的注释中显示了一种使用
dtrace
在Mac OS X上运行的解决方案。     ,我假设您正在Unix上工作。 使用ѭ3进行调试。 如果您的程序崩溃了。 您可以使用生成的核心文件来查看堆栈跟踪。 它将提供您所要求的所有信息。 有关使用gdb和核心文件检查stacktrace的更多信息,请参见此处。     ,您还可以使用所有详细信息(例如函数名称,参数等)将函数调用记录在文件系统上。 (通常,日志记录在Server-Clients应用程序中是有帮助的,但是我不确定您的应用程序是什么)。 这样,您可以跟踪所有呼叫。您还可以仅以调试模式启用日志记录。希望此回复对您有用。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...