首页 > 解决方案 > Intel PIN:当工具中发生段错误时打印回溯

问题描述

我正在为英特尔 PIN 开发一个工具。在运行时的某个地方,它给了我以下错误。我想知道是否有办法告诉 PIN 打印回溯或让我处理工具本身的段错误。

我正在使用 MPI 运行我的工具,当我将值插入无序映射时它会崩溃。

C:工具(或引脚)导致 PC 0x2b09594533cb 处的信号 11

mpirun -np 44 pin-3.7-97619-g0d0c92f4f-gcc-linux/pin -follow_execv -t pin-3.7-97619-g0d0c92f4f-gcc-linux/source/tools/Simp ... -- 程序

标签: intel-pin

解决方案


您可以使用以下 API:

PIN_AddInternalExceptionHandler()

从那里您可以访问EXCEPTION_INFO应该使用异常 API操作的结构。

否则,您也可以在调试器中调试您的工具,方法是使用 -pause_tool 20 选项启动您的工具。然后您有 20 秒的时间将调试器附加到该进程。连接后,调试器将停止(至少在 Visual Studio 中)并允许您在工具代码中设置所需的断点。

但这并不容易调试,因为整个系统会不断地从 pintool 代码切换到 pin,再到目标应用程序。因此,在您的 pintool 代码中没有可以遵循的连续步骤过程,正如您在调试“经典单线程应用程序”时所期望的那样。


推荐阅读