windows下一个程序crash,有什么方法可以知道它的stack trace吗?
是这样的,我正在开发一款,debug我们产品的工具。。
所以我想知道,windows下,一个程序crash,我有什么什么方法可以获取它的stack trace,呈现给客户看呢。。。
用函数实现,用命令实现,也行啊。。。
[解决办法]
The StackWalk64 function provides a portable method for obtaining a stack trace.
BOOL WINAPI StackWalk64(
__in DWORD MachineType,
__in HANDLE hProcess,
__in HANDLE hThread,
__inout LPSTACKFRAME64 StackFrame,
__inout PVOID ContextRecord,
__in_opt PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
__in_opt PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
__in_opt PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
__in_opt PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress
);
[解决办法]
进程 A 可以自己在崩溃的时候打印呀.
要用进程 B 来打印也可以, 用调式 API 让 B 模拟一个调试器, 它启动的时候自动 attach 上 A 进程. 这样 A 进程发生的异常等等 B 都可以收到通知并做处理