在另一个应用程序(国际象棋 GUI)中调试控制台 ChessEngine.exe "used"

Debugging a console ChessEngine.exe "used" in another application (a chess GUI)

我在 visual studio 2019 年有一个 c++ 控制台应用程序项目。编译后,它给出了一个命令行 engine.exe,在用户输入和命令执行后发送输出并等待另一个用户输入等

实际上 engine.exe 是一个符合 UCI 接口标准的国际象棋引擎,除其他外,它强制引擎成为命令行可执行文件,并允许在 Arena Chess GUI 中使用引擎,因此 chess 标签。 (c++ 是因为我在 visual studio 内的 c++ 中编写了引擎,因为我猜答案将取决于 visual studio c++ 项目设置。)

我可以通过输入第一步、等待引擎的响应等从命令提示符完美地调试 Engine.exe。您可以像在 visual studio 中调试标准控制台 hello world 一样进行操作,不问题。

现在我更感兴趣的是调试 Engine.exe 使用 它来自国际象棋 GUI,即 Arena Chess GUI。但这不起作用:

我想问题是在 windows cmd 提示符之外使用 visual studio 调试命令行是不可能的,而你可以从任何 exe 使用调试 dll 它。

进行的标准方法是什么?

备注。 我已经在此处发布了关于 CSE 的问题 https://chess.stackexchange.com/questions/27911/debugging-my-chess-engine-through-the-arena-gui 但最终认为它更适合 SE,因为它在形式上完全不依赖于国际象棋.

如果您的引擎是由该 Arena 加载的 DLL,则您列出的步骤将有效。

但是,您的 engine.exe 不会被 Arena 加载,而只是开始使用一些未知的进程间通信接口来回传递信息(移动)。

您必须将调试器附加到您的引擎,而不是 Arena。

小问题:您的引擎是在启动时只加载一次还是每次移动都加载一次?