我开开过程中使用堆栈遍历调试的进程
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;
,然后(用C++/Windows)中,我试图用
到stackwalk它bool ok = StackWalk64(IMAGE_FILE_MACHINE_I386,m_ps.Handle ,m_th.Handle,
&m_stackframe, &m_threadContext,
0, NULL, NULL, 0);
但stackwalk只是给我的顶端地址和下一个是0,而我知道 ther e是堆栈中的更多地址。
有人知道问题出在哪里吗?
谢谢:)
当我仅用“CREATE_NEW_CONSOLE”标志创建进程时,我已经有了这个工作,但现在我需要stackwalk一个调试过程。 “CreateProcess”中的标志是我所做的唯一区别... – Idov 2010-11-19 14:58:14