堆栈走过一个debugging过程

我打开一个进程(用C ++ / Windows)使用

if( CreateProcessA( NULL, // No module name (use command line) (LPSTR)path, //argv[1], // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE creationFlags, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &startInfo, // Pointer to STARTUPINFO structure &processInfo ) // Pointer to PROCESS_INFORMATION structure 

哪里

 DWORD creationFlags = DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS; 

然后我试着堆栈走

 bool ok = StackWalk64(IMAGE_FILE_MACHINE_I386,m_ps.Handle ,m_th.Handle, &m_stackframe, &m_threadContext, 0, NULL, NULL, 0); 

但stackwalk只是给我的顶部地址和下一个是0,而我知道有更多的地址在堆栈中。

有人知道有什么问题吗?
谢谢 :)

Solutions Collecting From Web of "堆栈走过一个debugging过程"

根据这个片段是不可能的。 有这么多,你必须正确设置才能这个工作。 看看这个详细的博客文章的逻辑。

发布更多的代码,如果你可以张贴更大但不是太大的样本。 你如何设置STACKFRAME和CONTEXT结构? 你在StackWalk64循环吗? 任何给定的调用只返回一个堆栈帧。

哎呀…我忘记调试过程中收到事件后调用“ContinueDebugEvent” – 所以它保持暂停和StackWalk事实上是正确的。 🙂