
[英]Stepping through Visual Studio Debugger with F10/F11 behaves like F5 (Run)
[英]Visual Studio Debugger Not working with F10
我创建了一个 Windows 服务项目。 当服务打开时,我使用
调试 → 附加到进程
它开始显示符号尚未加载所以我进入
视窗 → 模块
并手动加载符号。 我能够找到断点,但是当我按F10来单步执行代码时,它跳过了大量代码而不是单步执行。 有谁知道为什么会这样? 是因为我用来加载符号的工作吗?
更新:我有一个用 C# 编写的 DLL。 当代码步入该 DLL 时,它完全正常工作,并且适当地进入和退出没有问题。 但是在 Windows 服务本身中,它似乎跳过了大量代码。
更新 2对不起,如果我不清楚。 Windows 服务是我写的。 我的所有其他窗口服务都可以正常工作,没有这个问题。 我已经能够在不使用F5 的情况下成功地做到这一点,但它这个特殊的 Windows 服务并没有在每个断点处停止。 当我进入另一个 dll 中的代码时,它会正常中断并且一切正常。 难道这个项目以某种方式被破坏了?
请参阅为什么 Visual Studio 中的 F10 (step over) 不起作用? 为了启用非托管部分的调试,应设置托管项目(启动项目)的属性:
Configuration Properties -> Debugging -> Enable Unmanaged Debugging = TRUE;
除此之外,您还可以使用日志来阅读和记录所有进度。 实际代码在哪里。
我个人更喜欢用于 Windows 服务调试的日志
调试服务 在调试配置中构建您的服务。
安装您的服务。 有关更多信息,请参阅如何:安装和卸载服务。
从服务控制管理器、服务器资源管理器或代码启动您的服务。 有关更多信息,请参见如何:启动服务。
使用管理凭据启动 Visual Studio,以便您可以附加到系统进程。
(可选)在 Visual Studio 菜单栏上,选择“工具”、“选项”。 在“选项”对话框中,选择“调试”、“符号”,选中“Microsoft 符号服务器”复选框,然后选择“确定”按钮。
在菜单栏上,从“调试”或“工具”菜单中选择“附加到进程”。 (键盘:Ctrl+Alt+P)
出现进程对话框。
从所有用户的复选框中选择显示进程。
在可用进程部分,为您的服务选择进程,然后选择附加。
Tip: The process will have the same name as the executable file for your service.
出现附加到进程对话框。
选择适当的选项,然后选择确定关闭对话框。
Note: You are now in debug mode.
设置要在代码中使用的任何断点。
访问服务控制管理器并操作您的服务,发送停止、暂停和继续命令以命中您的断点。 有关运行服务控制管理器的更多信息,请参见如何:启动服务。 另请参阅故障排除:调试 Windows 服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.