lifewithbunny

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://larryzhu.blogbus.com/logs/2335935.html

VC中如何打印当前调用堆栈

作者:朱之光

不需要依赖VC.IDE就能够随时得到当前调用堆栈的情况,对于调试bug提供了一种有力的手段。

在codeproject上找到StackWalker,作者是Jochen Kalmbach。

http://www.codeproject.com/threads/StackWalker.asp

使用方法

在程序的任意处方上以下代码即可。执行到这段代码的时候就会将当前调用堆栈信息输出到output窗口。

StackWalker sw;
sw.ShowCallstack();

你也可以定义自己的输出方式,如打印到控制台。

#include "stackwalker.h"

class ConsoleStackWalker : public StackWalker
{
public:
  virtual void OnOutput(LPCSTR szText) { printf(szText); }
};


注:
如果出现ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 004172DC)
表示有可能是下面两个原因
1、pdb文件找不到
2、dbhelp.dll版本太老。请到:http://www.microsoft.com/whdc/devtools/debugging/default.mspx
下载安装最新版的debuging tools

posted on 2011-09-20 14:00  lifewithbunny  阅读(1349)  评论(0)    收藏  举报