喝杯酒吸口烟休息一会儿 發表於 2020-9-14 15:47:16

分享5个实用的vs调试技巧

<p><span style="color: #ff0000"><strong>并行堆栈</strong></span></p>
<p><strong>作用简介:</strong></p>
<p>我们可以通过调用堆栈窗口查看当前线程的调用栈,局限是只能查看某个线程的调用栈,要想查看每个线程的调用栈得切来切去的,太麻烦。如果我们想同时查看多个线程的调用情况,我们可以使用并行堆栈窗口。顾名思义,并行堆栈窗口可以同时查看多个线程的调用栈。如果程序中的某个线程死循环了,我们想确定是哪个,这时候可以中断到 vs 中,然后打开并行堆栈窗口进行查看,基本上可以很快定位到出问题的代码。</p>
<p><strong>打开方式:</strong></p>
<p>调试的时候,通过 调试 -&gt; 窗口 -&gt; 并行堆栈 即可打开。在 vs2013 中对应的快捷键是 ctrl + shift + d, s 。</p>
<p>注意是按住 ctrl + shift,再按 d,松开 ctrl, shift 后再按 s。</p>
<p style="text-align: center"><img alt="" src="https://img.jbzj.com/file_images/article/202009/2020914153832893.gif?2020814153843" /></p>
<p>说明:</p>
<p>我个人不太喜欢 vs 默认的中文翻译,我认为调用堆栈,并行堆栈翻译的并不准确,Call Stack 直译为调用栈就很好,因为函数调用跟堆一点关系都没有,而且 stack 直译过来也是栈,heap 才是堆,不知道为什么会把调用栈翻译成堆栈。希望有知道的小伙伴儿留言指点。</p>
<p><span style="color: #ff0000"><strong>并行监视</strong></span></p>
<p><strong>作用简介:</strong></p>
<p>相信,大家经常使用监视窗口查看变量,当我们想查看每个栈帧的局部变量的时候,我们需要切换到对应栈帧才能看到对应的值,是不是比较麻烦?并行监视窗口了解下?</p>
<p style="text-align: center"><img alt="" src="https://img.jbzj.com/file_images/article/202009/2020914153919841.gif?2020814153930" /></p>
<p><strong>打开方式:</strong></p>
<p>调试的时候,通过 调试 -&gt; 窗口 -&gt; 并行监视 -&gt; 并行监视1/2/3/4 即可打开对应的并行监视窗口。和监视窗口一样可以同时打开四个。</p>
<p>在 vs2013 中对应的快捷键是 ctrl + shift + d, 1/2/3/4 。注意是按住 ctrl + shift,再按 d,松开 ctrl, shift 后再按 1/2/3/4。</p>
<p style="text-align: center"><img alt="" src="https://img.jbzj.com/file_images/article/202009/2020914154006409.png?2020814154026" /></p>
<p><span style="color: #ff0000"><strong>自动窗口</strong></span></p>
<p><strong>作用简介:</strong></p>
<p>除了可以查看函数参数,局部变量的值意外,更有用的功能是查看函数调用的返回值。</p>
<p style="text-align: center"><img alt="" width="1639" height="879" src="https://img.jbzj.com/file_images/article/202009/2020914154100344.gif?2020814154114" /></p>
<p><strong>打开方式:</strong></p>
<p>调试的时候,通过 调试 -&gt; 窗口 -&gt; 自动窗口 即可打开。在 vs2013 中对应的快捷键是 ctrl + alt + v, s 。注意是按住 ctrl + alt,再按 v,松开 ctrl, alt 后再按 s。</p>
<p style="text-align: center"><img alt="" src="https://img.jbzj.com/file_images/article/202009/2020914154237723.png?2020814154250" /></p>
<p><span style="color: #ff0000"><strong>混合调试</strong></span></p>
<p><strong>作用简介:</strong></p>
<p>当我们需要调试的程序中有 .NET 代码,也有 c++ 代码时,开启混合调试非常有必要。</p>
<p><strong>打开方式:</strong></p>
<p>通过 F5 调试时的设置方法。</p>
<p style="text-align: center"><img alt="" src="https://img.jbzj.com/file_images/article/202009/2020914154332640.png?2020814154344" /></p>
<p>通过附加进程进行调试时的设置方法。</p>
<p style="text-align: center"><img alt="" src="https://img.jbzj.com/file_images/article/202009/2020914154410349.png?2020814154422" /></p>
<p>务必注意: 有时候我们设置断点不生效,可以检查一下调试方式是否选对了。如果我们只想调试 C++ 代码,可以只勾选 Native,如果只想调 .NET 代码,可以根据实际情况勾选 Managed(v4.5, v4.0) 或者 Managed(v3.5, v3.0, v2.0),如果都想调那就都勾选。</p>
<p><span style="color: #ff0000"><strong>使用断点修改变量的值</strong></span></p>
<p><strong>作用简介:</strong></p>
<p>相信大家在调试的时候都设置过断点,但是你是否知道我们可以在调试的时候通过断点来改变变量的值?</p>
<p>调查问题时,想手动修改值来验证一下我们的想法是否正确,但是又不想修改代码,也不想中断下来后,手动修改,因为可能需要手动修改 N 次,改过的小伙伴儿应该有体会。我们可以通过这个小技巧来自动帮我们改变变量的值。</p>
<p style="text-align: center"><img alt="" width="1350" height="879" src="https://img.jbzj.com/file_images/article/202009/2020914154457348.gif?2020814154510" /></p>
<p>注意:</p>
<p>1、 表达式不要加分号!!!</p>
<p>2、 高版本的 vs 才支持,vs2019 亲测有效,其它版本没测试。</p>
<p><span style="color: #ff0000"><strong>注意事项:</strong></span></p>
<p>1、 程序需要中断到 vs 后,才能执行查看调用栈,观察变量等操作。</p>
<p>2、 不需要的时候,请关闭并行堆栈等窗口,因为刷新信息对调试速度有一定影响,如果觉得 vs 调试速度慢了,可以关闭不必要的窗口。</p>
<p>3、 vs2013 中默认的快捷键设计的比较蛋疼,使用的时候需要注意。</p>
<p><span style="color: #ff0000"><strong>总结</strong></span></p>
<p>当然,还有很多很多其它调试技巧(包括上一篇文章中提到的 natvis),快捷键等等,后续会慢慢分享给大家。欢迎大家在群里多交流。</p>
<p><span style="color: #ff0000"><strong>参考资料</strong></span><br />
</p>
<p>https://docs.microsoft.com/en-US/visualstudio/debugger/debugger-tips-and-tricks&#63;view=vs-2019</p>
<p>以上就是分享5个实用的vs调试技巧的详细内容,更多关于vs调试技巧的资料请关注琼殿技术社区其它相关文章!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>VS2022远程调试工具的使用方法</li><li>VSCode远程开发调试服务器c/c++代码</li><li>Visual Studio实用调试技巧大全</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 分享5个实用的vs调试技巧