gpt4 book ai didi

windows - 切换 JIT 调试器?

转载 作者:可可西里 更新时间:2023-11-01 13:28:48 24 4
gpt4 key购买 nike

当您必须使用不同的 IDE 维护不同的项目时,将它们安装在同一台 Windows 计算机上通常很有意义。

例如,在同一系统上混合使用 Visual Studio 和 Delphi,或者不同版本的 Delphi(我敢肯定其他人甚至有不同的组合)。

您会在那里发现的其中一件事是,最新的工具将自身安装为 JIT 调试器:当应用程序崩溃时会触发的即时调试器。

根据应用程序崩溃的工具和版本(有时在调试器中运行时无法重现错误,例如在 Heisenbug 的情况下),您需要提前选择调试器。

你怎么做到的?

最佳答案

编写一个简单的应用程序,在应用程序崩溃的情况下启动您想要的调试器。

中注册您的应用
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

In case of an 64bit OS, also to the following key

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug

add/modify the string named Debugger with value:

"C:..\Win32\Debug\Project1.exe" %ld %ld
 

A very simple application:

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Add('BDS 16');
ComboBox1.Items.Add('BDS 15');
ComboBox1.Items.Add('WinDbg');
ComboBox1.Items.Add('VS');
// etc..
ComboBox1.ItemIndex := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
proc: THandle;
begin
Assert(ParamCount >= 2);
proc := OpenProcess(SYNCHRONIZE, False, StrToInt(ParamStr(1)));
case ComboBox1.ItemIndex of
0: ShellExecute(0, '', 'C:\..\RAD Studio\9.0\bin\bds.exe',
PChar(Format('/attach:%s;%s', [ParamStr(1), ParamStr(2)])), '',
SW_SHOWNORMAL);
1 : // etc..
2: ShellExecute(0, '', 'C:\Program Files (x86)\..\windbg.exe',
PChar(Format('-p %s -e %s -g', [ParamStr(1), ParamStr(2)])), '',
SW_SHOWNORMAL);
3: ShellExecute(0, '', 'C:\Windows\system32\VSJitDebugger.exe',
PChar(Format('-p %s -e %s', [ParamStr(1), ParamStr(2)])), '',
SW_SHOWNORMAL);
//..
end;
if Bool(proc) then begin
WaitForSingleObject(proc, INFINITE);
Application.Terminate;
end;
end;

关于windows - 切换 JIT 调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12741751/

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