小编And*_*ein的帖子

带有DEBUG_PROCESS标志的CreateProcess在某些可执行文件上导致错误50

我正在尝试编写小型调试器.我的简化代码是

STARTUPINFOA sui;
ZeroMemory( &sui, sizeof(sui) );
sui.cb = sizeof(sui);
PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );

DWORD dwFlags = DEBUG_PROCESS;
string program = "program.exe";
if (! CreateProcessA(NULL, (char*) program.c_str(), NULL, NULL, TRUE, dwFlags, NULL, NULL, &sui, &pi))
    printf("%s failed. LastError = %d", program.c_str(), GetLastError());
Run Code Online (Sandbox Code Playgroud)

在大量的可执行文件上它工作正常.

但是例如在C#编译的可执行文件上,这段代码输出"program.exe failed.LastError = 50".错误50是ERROR_NOT_SUPPORTED(http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382 (v=vs.85 ) .aspx).这可能是什么原因?我如何调试所有类型的二进制文件?

c++ windows debugging createprocess

4
推荐指数
1
解决办法
1967
查看次数

标签 统计

c++ ×1

createprocess ×1

debugging ×1

windows ×1