gpt4 book ai didi

delphi - 使用 CreateProcess 进行调试

转载 作者:行者123 更新时间:2023-12-03 09:27:04 25 4
gpt4 key购买 nike

我正在使用带有 DEBUG_ONLY_THIS_PROCESS 标志的 CreateProcess 。新进程已创建,但新运行的应用程序没有执行任何操作,当我使用任务管理器查看进程列表时,我看到的只是 exe 文件的名称,仅分配了 70KB 内存!

如果我创建的进程没有 DEBUG_ONLY_THIS_PROCESS 标志,则应用程序可以完美运行。

这是我的代码:

function TDebugger.StartDebug;
var
ProcInfo: TProcessInformation;
ProcessCreationFlags: Cardinal;
StartupInfo: TStartupInfo;
DE: TDebugEvent;
begin
// == init process info
ZeroMemory(@ProcInfo, SizeOf(TProcessInformation));
// == init startup info
ZeroMemory(@StartupInfo, SizeOf(TStartupInfo));
with StartupInfo do begin
cb := SizeOf(TStartupInfo);
lpDesktop := '';
dwX := CW_USEDEFAULT;
dwY := CW_USEDEFAULT;
dwXSize := CW_USEDEFAULT;
dwYSize := CW_USEDEFAULT;
wShowWindow := SW_SHOWDEFAULT;
end;
// == Create the process
ProcessCreationFlags := DEBUG_ONLY_THIS_PROCESS;
if (not CreateProcess(PWideChar(Path), Nil, Nil, Nil, False, ProcessCreationFlags, Nil, PWideChar(CurrentDirectory), StartupInfo,
ProcInfo)) then
RaiseLastOSError;

end;

我认为创建进程后应该调用一些API函数,但我不知道它是什么。谁能帮我解决这个问题吗?

其他信息:我的主要应用程序是一个 IDE,它需要调试其播放器应用程序。

最佳答案

当您使用 DEBUG_ONLY_THIS_PROCESS 创建一个用于调试的进程时,该进程实际上并没有开始运行。它等待您的调试器启动它。所以,是的,您确实必须调用一些函数来启动并运行进程。现在您需要编写调试器!其主体是调试器循环。

一些可能有帮助的引用:

关于delphi - 使用 CreateProcess 进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com