问题描述
在使用 Visual Studio 2017 进行代码调试时,出现长时间未响应的问题。
排查步骤
1. 下载 Procdump
下载并安装 Procdump 工具用于进程诊断。
2. 创建诊断脚本
新建 cc2.bat 文件,内容如下:
batch
"C:\Users\VinnoUI\Downloads\Procdump\procdump.exe" -ma -h -o D:\Tanner\Log\vs_hang.dmp -x "D:\Tanner\Log\dumps" devenv.exe /useenv /nosplash
3. 复现问题并获取 Dump 文件
运行诊断脚本,然后进行代码调试,直到出现未响应现象。Dump 文件将自动生成在 D:\Tanner\Log\dumps 目录中。
4. 使用 WinDbg 分析 Dump 文件
启动 WinDbg,打开生成的 .dmp 文件进行分析。
5. 查看调用栈
在 WinDbg 中执行 ~*k 命令查看所有线程的调用栈:
. 0 Id: 5694.71dc Suspend: 0 Teb: 008c6000 Unfrozen
# ChildEBP RetAddr
00 007ce9e8 751d2839 ntdll!NtWaitForSingleObject+0xc
01 007ce9e8 751d2792 KERNELBASE!WaitForSingleObjectEx+0x99
02 007ce9fc 13ef4413 KERNELBASE!WaitForSingleObject+0x12
WARNING: Stack unwind information not available. Following frames may be wrong.
03 007cea0c 13ef42f5 SogouPY!ImeExtension+0x836a3
04 007cea38 13ef450e SogouPY!ImeExtension+0x83585
05 007cea54 14414a7c SogouPY!ImeExtension+0x8379e
06 007ceab0 14414955 SogouPY!ImeExtension+0x5a3d0c
07 007ceae4 13e784f9 SogouPY!ImeExtension+0x5a3be5
08 007ceb68 13fe64aa SogouPY!ImeExtension+0x7789
09 007ceb7c 13fe6545 SogouPY!ImeExtension+0x17573a
0a 007ceba4 13fdbabb SogouPY!ImeExtension+0x1757d5
0b 007cf028 13fd9601 SogouPY!ImeExtension+0x16ad4b
0c 007cf0d0 13fd904e SogouPY!ImeExtension+0x168891
0d 007cf14c 13fd920a SogouPY!ImeExtension+0x1682de
0e 007cf3cc 13fd87eb SogouPY!ImeExtension+0x16849a
0f 007cf40c 76ae1c0b SogouPY!ImeExtension+0x167a7b
6. 问题定位
从调用栈分析可以看出,问题出现在 SogouPY 模块中,即搜狗输入法。
7. 验证与解决
切换使用 Windows 自带输入法,重新进行调试,未再出现未响应问题。
结论
搜狗输入法会导致 Visual Studio 2017 在调试时出现未响应问题。
解决方案
建议在开发调试时:
- 使用 Windows 自带输入法
- 或临时禁用搜狗输入法
- 或考虑卸载搜狗输入法
相关工具
- Procdump: 微软提供的进程诊断工具,用于生成进程快照
- WinDbg: Windows 调试工具,用于分析 Dump 文件
文档创建日期: 2026-04-17