怎么在崩溃的时候得到完整的栈信息

如何在崩溃的时候得到完整的栈信息
我用StackWalk函数在程序崩溃的时候得到栈信息,在debug版本下面还好,release版本下面只能得到一部分,请问怎么解决呢
debug版本看起来像这个样子
-MyExe.exe 0x0400015 + 0x0C
-MFC80d.dll 0x0700152 + 0x120
而release版本没有MFC80.dll这一行

另外kernel32.dll里面的函数调用也没有得到,我看迅雷,qq都能得到kernel32.dll里面的栈
谢谢

------解决方案--------------------
你需要用工具抓full dump
adplus之类的工具都可以

------解决方案--------------------
mini dump肯定不行,只有部分错误信息

------解决方案--------------------
帮顶一下,StackWalk能够获取DEBUG版本信息,这个没有任何疑义

但是Release版本应该也差不多了,是不是参数的问题呢
------解决方案--------------------
可能是编译Realse版本的时候添加的Debug Info,在VC里有设置的
------解决方案--------------------
关注!对错误处理这方面的知识太缺乏了。
------解决方案--------------------
利用MS的dbghelp.dll提供的DbgHelpCreateUserDump来生成dump文件就可以了
------解决方案--------------------
顶楼上的,一般都是用的dbghelp.dll
------解决方案--------------------
过来学习
------解决方案--------------------
学习了
------解决方案--------------------
很简单的,用WINDBG分析,只要是全DUMP,就好分析
------解决方案--------------------
MFC80d.dll这是调试版调用的MFC库。
Release版是不调用这个的,当然你看不到这个了
------解决方案--------------------
关注此贴
------解决方案--------------------
http://www.codeproject.com/KB/threads/StackWalker.aspx 看这个例子
------解决方案--------------------
学习了
------解决方案--------------------
学习了
------解决方案--------------------
在项目里生成PDB文件就好了
------解决方案--------------------
1. 生成map
2.用dump抓 crash文件

核对map 去查代码

探讨
类似下面的东东


迅雷5 5.7.2.371
———————————–
Type: EXCEPTION_UNCATCH_THROW
Address: 0×7C812A5B
Error: [3536][asyn_io_manager] unknown

Call stack:
0×7C800000[12A5B] kernel32.dll: RaiseException[+52](-536838143,1,1,21036956)
0×21350000[10FA0] download_interface.dll: debug_p2p_pipe_simulate_remote_choke_local[+45D0](11364736,1429560,1243148,11364736)
0×7C800000[B683] kernel32.dll: GetModuleFileNameA[+1B4](0,0,0,0)

------解决方案--------------------
看了楼主的帖子,我研究了一下这方面的东西。。
在blog上整理了网上的几篇文章。

blog.****.net/alicehyxx
------解决方案--------------------
别的不说了,贴代码。觉得好用就加分。


dumper.h
C/C++ code

#ifndef __DUMPER_H__
#define __DUMPER_H__

#include <time.h>
#include <string>
#include <windows.h>
#include <dbghelp.h>

#pragma comment(lib,"dbghelp.lib")

class CDumper
{
public:
    CDumper(void);
    ~CDumper(void);

    static int OnError(LPEXCEPTION_POINTERS pException);
    static std::string FormateDateTime(time_t t);
    static const char* GetRootPath(void);
    static void Test(void);
};

#endif //__DUMPER_H__

------解决方案--------------------