---------restart
--------attach 2 process
g/go:继续
--------open dump
.reload /f
k
生成dump程序目录防止同样的dll或者pdb冗余
--------代理配置
变量名为:_NT_SYMBOL_PROXY
变量值为:127.0.0.1:8080
重新下载
0:040> !sym noisy
0:040> .sympath SRV*c:\localsymbols*https://msdl.microsoft.com/download/symbols
0:040> .reload /f
下载后c:\localsymbols 将会有vs的库以及windows基础库
/f 强制调试器立即加载符号。该参数会覆盖延迟符号加载。更多信息,查看下面的注释节。
/d 重新加载调试器模块列表中的所有模块。(省略所有参数时,这是用户模式调试下的默认行为。)
/i
忽略.pdb文件版本不匹配的情况。(如果没有包含该参数,调试器不会加载不匹配的符号文件。) 使用 /i时,即使没有明确指定,也会使用/f。
/l
列出模块但是不重加载它们的符号。(内核模式下,使用该参数的输出和!drivers 扩展命令一样。)
/n
仅重加载内核符号。该参数不会重加载任何用户模式符号。(只能在内核模式调试时使用该选项。)
/o
强制覆盖符号服务器的下游存储(downstream store)中的缓存文件。使用该标志时,还需要包含/f。默认情况下,下游存储中的文件永远不会被覆盖。
由于符号服务器对每个版本的二进制文件的符号使用不同的名字,除非确认下游存储被破坏了,否则不需要使用该选项。
/s
重新加载系统的模块映像列表中所有模块。(省略所有参数时,在内核模式下这是默认行为。) 如果在用户模式调试时使用名字来单独加载某个系统模块,则必须包含/s。
/u
卸载指定模块和它的所有符号。调试器卸载任何名字匹配Module 的模块,不管它的全路径是什么。映像名也会被搜索。更多信息,查看下面的注释节。
/unl
基于已卸载模块列表中的映像信息重新加载符号。
/user
仅重加载用户模式符号。(只能在内核模式调试时使用该选项。)
/v
打开详细显示。
/w
将Module 当作一个字面上的字符串。这样可以避免调试器展开通配符。
--------重新调试
记得同时更换pdb和dll
dmp生成有dotnet-dump windows 任务管理器自带的 创建存储文件生成dmp 也有程序自定义某些事件生成dmp
进程关闭卡死用dmp分析
程序调试用attach,由于有日志和vs2019几乎没用windbg attach过 很少用。