【发布时间】:2014-06-21 08:38:01
【问题描述】:
我现在正在学习 Intel pin,我在 pintool 的 main 函数中编写了以下代码。
try
{
throw std::exception("test daniel");
}
catch (std::exception& e)
{
printf(e.what());
}
运行它(pin.exe -t Test.dll -- calc.exe),但它只是崩溃了,这肯定是由于未捕获的异常。 但我想知道为什么我的“catch”代码失败了。
谁知道原因,或者如何在 pintool 中捕获异常?
【问题讨论】:
-
目前还没有直接的答案,但我发现 PIN_AddInternalExceptionHandler 设置的全局未捕获异常处理程序有效。就像SetUnhandledExceptionFilter 所做的一样。
-
您实际插入这段代码的位置对于理解您的问题很重要。您这样描述它的事实:“在我的 pintool 的主要功能中”表明您还没有了解 pintools 的工作原理,尤其是分析和检测时间是什么。因此,这不能真正被视为一个问题。换句话说,这个问题不够精确,无法解决。你应该更详细地解释你的问题。
-
@Heyji 显然这是在main中的分析时间,它无法捕捉到抛出的异常,代码如此短且可重复,为什么它不够精确?
-
我建议您编辑您的问题并显示您的工具的整个代码,以便我们更好地了解您想要实现的目标。您是否正在尝试捕获正在分析的应用程序(在您的情况下为 calc.exe)或您的工具(Test.dll)引发的异常?