如何获取ERRORLOG.txt中最深的调用堆栈条目?

时间:2019-03-26 09:35:30

标签: c++ exception callstack

在我的公司中,我们使用的是类似于arxiv.org/abs/1408.6373中所述的崩溃检测机制。如果发生崩溃,这会在ERRORLOG.TXT文件中提供以下信息:

Exception handler called in <Object>::<Method>.

在验证实际的故障转储时,调用堆栈如下所示:

<Object>::<Method> calls
  <Object>::<SubMethod> calls
    <OtherObject>::<OtherMethod>
      ...
      <AgainOtherObject>::<DeepestSubMethod>

在很多情况下,这些错误是由out-of-memory错误引起的,这些错误很容易被DeepestSubMethod识别为memcpyApplicationCopy,...

为了识别这些内容,我想在ERRORLOG.TXT中添加以下信息(仅是最高和最低的调用堆栈条目):

Exception handler called in <Object>::<Method>, ..., <AgainOtherObject>::<DeepestSubMethod>

然后我可以在ERRORLOG.TXT文件上启动grep,例如:

grep -v -i -E "memcpy|ApplicationCopy|..."

这将允许我仅过滤崩溃,而不是由内存不足异常(我正在寻找的实际软件错误)引起的崩溃。

不幸的是,ERRORLOG.TXT中的信息似乎来自{中定义的函数GetExceptionInformation()

`C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\excpt.h`.

是否存在另一种从异常中获取信息的方法,它不仅覆盖其调用栈的最高部分,还覆盖其最低部分?

0 个答案:

没有答案
相关问题