Tôi đang mở mở ra một quá trình (với C++/Windows) sử dụngstack Walking một quá trình sửa lỗi
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
nơi
DWORD creationFlags = DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS;
và sau đó tôi đang cố gắng để stackwalk nó với
bool ok = StackWalk64(IMAGE_FILE_MACHINE_I386,m_ps.Handle ,m_th.Handle,
&m_stackframe, &m_threadContext,
0, NULL, NULL, 0);
nhưng stackwalk chỉ cung cấp cho tôi địa chỉ hàng đầu và địa chỉ tiếp theo là 0, trong khi tôi biết có e là nhiều địa chỉ hơn trong ngăn xếp.
Có ai biết vấn đề là gì không?
cảm ơn :)
Tôi đã làm việc này tốt khi tôi tạo quy trình chỉ với cờ "CREATE_NEW_CONSOLE", nhưng bây giờ tôi cần phải xếp chồng lên nhau một quá trình được gỡ lỗi. các cờ trong "CreateProcess" là những khác biệt duy nhất tôi đã thực hiện ... – Idov