当前位置:C++技术网 > 资讯 > VisualGDB断点失效、断点不命中的问题

VisualGDB断点失效、断点不命中的问题

更新时间:2017-05-12 11:21:26浏览次数:1+次

        在VS2010中使用VisualGDB插件或者直接用VS2017都可以用来开发Linux程序。因为VS调试方便,比其他工具效率会高些。

    VisualGDB断点失效、断点不命中的问题

    不过遇见过几次这样的问题,那就是:在调试状态下,无法命中断点。也就是说,程序执行到断点处,根本就不会停下来,似乎断点不存在似的。
    一开始我很纳闷,难道是VisualGDB坏了?然后想想也没有动过什么设置,怎么会坏掉呢?然后用简单的代码来测试,可以调试,可以命中断点。
    百思不得其解。然后我仔细回想我代码改动了什么?后来发现了可疑之处。那就是,我将单线程的改成了多线程的了。为了验证问题,我将多线程的代码改回来单线程来测试,结果神奇的断点被命中了。
    这让我很吃惊!!自然而然,我又测试了多进程的调试,结果又发现,多进程也会有这个问题。也就是说,VisualGDB对多线程多进程的调试还是有点鸡肋。这个和VS的调试器还真是有不少差距。
    当然,VisualGDB是可以对多线程和多进程进行调试的,但是还是不如VS的调试器做的完善吧。不管怎么说,提高调试效率也是调试器的责任之一。如果我们习惯了VS中的调试方式,不管多线程还是多进程,断点所在的位置,调试器都会自动跟踪,这样调试效率会很高。如果还要我们手动去切换调试器跟踪的线程进程,那有多累。
    写这篇文章的目的在于记录一下VS中的VisualGDB插件调试多进程、多线程的程序时断点失效的问题。VisualGDB可以对主进程的主线程进行直接的跟踪调试,对于其他线程和其他进程,要有其他的动作才行,具体是什么,就不在这里说了。这里记录一下,免得遇到问题不知道为什么。