我想使用IDebugXXX interfaces
獲取我的local process
(沒有遠程附加)中的某些功能的堆棧跟蹤。Stacktrace/Stackwalk爲當前進程和當前線程與IDebug接口
使用此代碼附加到當前進程的作品,但當前線程的堆棧跟蹤送花兒給人包含only one frame
,如: ntdll!ZwGetContextThread+0x00000012
{
IDebugClient* debugClient;
IDebugControl4 *control4;
...
int flags = DEBUG_ATTACH_NONINVASIVE | DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND;
debugClient->AttachProcess(0, myProcessId, flags);
control4->SetExecutionStatus(DEBUG_STATUS_GO);
...
// get the stack trace for the current thread
control4->GetStackTrace(0, 0, 0, _stackFrames, ARRAYSIZE((_stackFrames)), &_uFramesFilled)
// _uFramesFilled is always '1' for the current thread
}
編輯: 該應用程序是用C++/CLI而其他線程的結果至少包含更多的幀。
託管調試器無法獲取非託管代碼的堆棧跟蹤。 –
這是一個C++/CLI應用程序 – boboes
然後,使這個複雜沒有意義,只需使用StackTrace類。 –