gpt4 book ai didi

c# - 无法使用 Mono Soft Debugger 远程调试,因为 'debugger-agent: DWP handshake failed' 错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:50 25 4
gpt4 key购买 nike

我在我的应用程序中嵌入了单声道。该应用程序是支持插件的控制台应用程序。插件是 .NET 程序集。一切都很好,但我想调试它们。要在我的 C 代码中启用调试,我有:

mono_set_dirs (ASSEMBLIES_DIR_NAME, ASSEMBLIES_DIR_NAME);
assembly_add_to_bundle(API_ASSEMBLY);

soft_debug = getenv("MYAPP_SOFT_DEBUG");
if (soft_debug != NULL) {
char *options;
options = malloc(17 + strlen(soft_debug));
sprintf(options, "--debugger-agent=%s", soft_debug);

mono_jit_parse_options (1, &options);
free (options);

mono_debug_init (MONO_DEBUG_FORMAT_MONO);
}

domain = JIT_INIT();

...

上面的代码初始化了单声道运行时,这就是我为启用调试所做的全部工作。为了在 MonoDevelop 端启用调试,我创建了一个插件并实现了必要的类。启动调试的是从 RemoteSoftDebuggerSession 派生的。这是我的 OnRun 方法:

protected override void OnRun (DebuggerStartInfo startInfo)
{
var dsi = (MyAppDebuggerStartInfo) startInfo;
var procStartInfo = new ProcessStartInfo(@"C:\MyApp\myapp.exe") {
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
WorkingDirectory = @"C:\MyApp",
Arguments = dsi.AppName
};

procStartInfo.EnvironmentVariables.Add("MYAPP_SOFT_DEBUG",
String.Format("transport=dt_socket,address={0}:{1}",
dsi.Address, dsi.DebugPort));

this._myapp = Process.Start(procStartInfo);
this._runner.EnableRaisingEvents = true;
base.ConnectOutput(this._runner.StandardOutput, false);
base.ConnectOutput(this._runner.StandardError, true);

this._runner.Exited += delegate { this.EndSession(); };
base.StartListening(dsi);
}

问题是当我开始调试 myapp 时打印“调试器代理:DWP 握手失败”并且调试结束。我所能弄清楚的是,恰好有 13 个字节被发送到 myapp.exe 并且收到了 13 个字节(“DWP-Handshake”中的字符数)。

有人知道这个问题吗?

最佳答案

问题解决了。问题出在这一行的 VirtualMachineManager.ListenInternal(2) 方法中:

dbg_sock.Disconnect (false);
dbg_sock.Close ();

由于某种原因,这是未处理的异常(在断开连接时)。 try-catch 解决了这个问题。现在一切正常!

关于c# - 无法使用 Mono Soft Debugger 远程调试,因为 'debugger-agent: DWP handshake failed' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3701211/

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