LLDB 本地调试有效,但不能使用 Direct3D 11 进行远程调试

LLDB Local Debugging works, but not Remote Debugging with Direct3D 11

提问人:helpful henry 提问时间:11/8/2023 最后编辑:helpful henry 更新时间:11/8/2023 访问量:35

问:

我正在尝试远程调试 D3D11 应用程序。我有一台 Windows 机器用 clang 构建程序。Windows 计算机已连接到另一台要使用 LLDB 进行调试的 Windows 计算机。当我使用 LLDB 在目标计算机上进行本地调试时,它按预期工作。但是,当从远程计算机进行调试时,调用 .除此之外,远程调试似乎按预期工作,也许有一些我不知道的LLDB设置?D3D11CreateDeviceDXGI_ERROR_UNSUPPORTED

这就是我正在做的:

platform select remote-windows
platform connect connect://X.X.X.X:YYYY
file Target.exe
run
C++ Windows 调试 LLDB Direct3D

评论

0赞 selbie 11/8/2023
我猜必须运行一个桌面会话才能初始化 Direct3D 内容。Target.exe 是否实际在桌面会话中运行(即它会在桌面上弹出)。也许产品代码回退到使用带有 D3DCreate 的软件模拟驱动程序?但是,如果您尝试调试实际的 D3D 渲染,则尝试远程调试将很容易出错。您是否尝试过仅使用 Windows 远程桌面?
0赞 helpful henry 11/8/2023
@selbie 代码在目标(调试者)计算机上运行,该计算机是一台安装了显卡和驱动程序、台式机等的普通 Windows 计算机。程序在没有调试器的情况下在其上运行,调试器在该计算机上本地运行。只有当我远程调试程序时,它才不起作用。它也在调试器(VM)机器上运行,尽管我只是偶然发现的。目标计算机有一个 4070 ti,当我创建 IDXGIFactory 并使用 EnumAdapter 循环访问适配器时,我可以看到它。但是,使用 4070 ti 适配器 (或 NULL、auto) 调用 D3D11CreateDevice 失败。
0赞 selbie 11/8/2023
我对 lldb 远程调试器一无所知,但您确定它在与本地用户登录的同一桌面会话上运行 target.exe,而不是作为在调试器下启动进程的某些后台服务。也就是说,如果您实际上将两台计算机并排,并且选择调试记事本 .exe,则记事本将在目标计算机上启动。
0赞 selbie 11/8/2023
换句话说。当您尝试从另一台计算机进行调试时,是否有人实际登录到目标计算机?

答: 暂无答案