在Windows下用C打印调用堆栈

时间:2017-07-13 13:25:06

标签: c windows callstack

我正在尝试打印我程序的调用堆栈,以防代码中出现断言。我正在使用以下代码: Win32 - Backtrace from C code (除了我的堆栈大小是60,CaptureStackBackTrace的第一个参数是2)。

仅在少数情况下输出如下:

0: MyFunction - 0x009DF4D0
1: main - 0x00A533E0
2: __tmainCRTStartup - 0x00A56AF0
3: mainCRTStart - 0x00A56AD0
4: BaseThreadInitThunk - 0x76603378
5: RtlInitializeExceptionChain - 0x77DC989F

但在大多数情况下,printStack的输出看起来像这样:

0: BaseThreadInitThunk - 0x74CB3358
1: BaseThreadInitThunk - 0x74CB3358
2: BaseThreadInitThunk - 0x74CB3358
3: BaseThreadInitThunk - 0x74CB3358
4: BaseThreadInitThunk - 0x74CB3358
5: BaseThreadInitThunk - 0x74CB3358
6: BaseThreadInitThunk - 0x74CB3358
7: BaseThreadInitThunk - 0x74CB3358
8: BaseThreadInitThunk - 0x74CB3358
9: BaseThreadInitThunk - 0x74CB3358
10: BaseThreadInitThunk - 0x74CB3358
11: BaseThreadInitThunk - 0x74CB3358
12: BaseThreadInitThunk - 0x74CB3358
13: BaseThreadInitThunk - 0x74CB3358
14: RtlInitializeExceptionChain - 0x773D989F

当我从不属于我自己的电脑运行程序时,我总是得到后一种情况。 当我从我的电脑运行程序时,在某些情况下,我得到了前一种情况, 在后一种情况下。

任何帮助?

0 个答案:

没有答案