标签: breakpoints

为什么Visual Studio 2008会跳过我的断点?

我正在运行带有SP1的Visual Studio 2008.当我调试应用程序时,它将跳过我的断点.

例如,我有两行代码,每行代码调用一个方法.我会在两条线上都设一个断点.我会跑一次,它会在第一个断点停止,但不会在下一个断点停止.我会再次运行它,它会击中第二个,而不是第一个.

我试图清理解决方案并重建.

我在解决方案中有多个项目.

breakpoints visual-studio-2008

5
推荐指数
2
解决办法
1万
查看次数

如何设置vector <int>长度增加时的断点?

我有一个空的向量,有些东西填充它,我找不到它.我想设置一个内存断点,以便在发生push_back时程序将中断.

我正在使用Visual Studio 2008,问题是向量在监视窗口中没有显示其内部成员(它似乎有自定义格式).它看起来像这样:

myVector [0]()std :: vector <int,std :: allocator <int >>

指示大小0.任何提示?

c++ stl breakpoints vector visual-c++

5
推荐指数
1
解决办法
1982
查看次数

GDB:警告:在重载方法上设置了多个断点

anisha@linux-dopx:~> g++ -Wall -pedantic breakpoints.cpp -g
anisha@linux-dopx:~> gdb a.out
(gdb) b X::X
Breakpoint 1 at 0x400ac1: file breakpoints.cpp, line 14.
Breakpoint 2 at 0x400aa0: file breakpoints.cpp, line 9.
warning: Multiple breakpoints were set.
Use the "delete" command to delete unwanted breakpoints.
(gdb)
Run Code Online (Sandbox Code Playgroud)

在默认构造函数上设置断点的方法是什么,这样GDB不会在其重载的对应项上创建不必要的断点?

或者它是GDB的问题,它希望用户删除它的混乱?还是我错过了一点?

编辑1.

对于以下代码:

class X
{
    public:
        X   () 
        {
            std :: cout << "\nIn the default constructor";
        }

        X   (int) 
        {
            std :: cout << "\nIn the parameterized constructor";
        }

        ~X () {}
};
Run Code Online (Sandbox Code Playgroud)

我试过了:

(gdb) …
Run Code Online (Sandbox Code Playgroud)

c++ gdb breakpoints

5
推荐指数
1
解决办法
2437
查看次数

无法在Visual Studio中到达断点

我在Visual Studio 2010 Express中遇到了一个奇怪的断点行为.下面是带断点的代码.

在此输入图像描述

我能够在第一个断点(第159行)处断开,但是在第160行之后步进,光标消失,即在按下F10/F11的代码图像之后,显示应用程序.

问题是,

为什么第162行不执行(没有此声明,asserts在其他地方失败)或打破它?

注意:Refresh();正在执行第166行,因为显示的应用程序已更新.

编辑:根据评论中的建议,我逐步进行反汇编,我发现这行(来自wxWidgets库)导致调试失败00D5AF7C call wxCharBuffer::~wxCharBuffer (0D207AAh)

c++ wxwidgets breakpoints visual-studio-2010

5
推荐指数
1
解决办法
519
查看次数

跟踪调试器中花费的时间

[[编辑2x]我认为我已经把我原来的问题写错了,所以我已经把它翻到了下面并重写了我想要的内容,以供将来的读者使用.]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[新的,有光泽的,清晰的问题,更好的措辞]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~

我有一个运行模拟/游戏框架的循环.这个循环有几个地方需要确定实际上已经过了多少时间,这样这些特殊地方的逻辑 - 特别是渲染和更新 - 才能正常工作.它可以选择是固定时间步(unfixed[update/render]是否为假).

当基于断点的调试在应用程序的任何一点完成时会出现问题,因为它使用秒表来计算实时已经过了多少(为了物理和动画以实际速度移动,而不是基于多少计算机可以生成的框架).

它看起来(粗略地)是这样的,对应用程序循环的每个"部分"使用多个秒表,需要知道自上次"部分"发生以来已经过了多少时间:

while ( RunningTheSimulation ) {
    /* ... Events and other fun awesome stuff */

    TimeSpan updatedifference = new TimeSpan( updatestopwatch.ElapsedTicks );

    if ( unfixedupdate || updatedifference > updateinterval ) {

        Time = new GameTime( updatedifference,
                                    new TimeSpan( gamestopwatch.ElapsedTicks ) );
        Update( Time );
        ++updatecount;
        updatestopwatch.Reset( );
        updatestopwatch.Start( );
    }

    TimeSpan renderdifference = new TimeSpan( renderstopwatch.ElapsedTicks );

    if ( unfixedrender || renderdifference …
Run Code Online (Sandbox Code Playgroud)

.net c# breakpoints visual-studio-debugging

5
推荐指数
1
解决办法
1779
查看次数

在任何控制台输出上使XCode中断

我发现这篇文章解释了如何设置条件断点以打破任何printf函数.在XCode中实现类似功能的过程是什么?目的显然是调试器停止何时何地尝试在控制台中输出任何内容.

xcode printf breakpoints xcode4.5

5
推荐指数
1
解决办法
840
查看次数

为什么数据断点在未对齐的地址上不起作用

在Visual Studio中调试C ++项目时,某些数据断点永远不会命中。

所以我写了一些测试代码:

#include <iostream>
#include <stdint.h>

void test(uint32_t* p)
{
    *p = 0;

    // set a data breakpoint on p

    *((char*)p + 2) = 0x1;

    std::cout << *p << std::endl;
}

uint32_t* alloc(size_t offset)
{
    char* p = new char[sizeof(uint32_t) + offset];
    p = p + offset;
    return (uint32_t*)p;
}

int main()
{
    test(alloc(0));    // test #1
    test(alloc(2));    // test #2
}
Run Code Online (Sandbox Code Playgroud)

如您所见,在功能测试中,* p的值将首先置零,然后将其隐式更改,我得到了一个小端CPU,因此必须为65536。

如果在p(4个字节)上设置数据断点以检测更改,则会得到两个不同的结果:是否命中。它取决于所指向的p的地址。

在我上面的测试代码中,测试#1将命中,而测试#2将不命中,#1和#2之间的区别是alloc(0)和alloc(2)返回的地址。

本文如何:在MSDN上设置数据断点不会讨论此问题。

数据断点不能在未对齐的地址上工作吗?

c++ debugging breakpoints visual-c++

5
推荐指数
1
解决办法
921
查看次数

有没有办法在GDB中重置断点统计信息?

假设如下.gdbinit:

break foobar
ignore 1 1
run
Run Code Online (Sandbox Code Playgroud)

程序开始使用gdb --args ./myprogram --argument1 --argument2等.

现在,当我开始这个时,第一次围绕一切都很好,花花公子.但是,如果我run(gdb)提示符上发出a 以便使用最后已知的命令行重新启动程序,则该ignore行将不会生效.

原因当然是清楚的.第一次我最终结束

(gdb) info break
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000000061ea6a in foobar at ../foobar.c:1173
        breakpoint already hit 1 time
Run Code Online (Sandbox Code Playgroud)

任何后续运行都以X中显示的任何值开始breakpoint already hit X time.当然,该值已经超过了设定的限制ignore.

如何重置断点上的统计数据或者更好,但我如何能够run自动为我做这个?

gdb breakpoints

5
推荐指数
1
解决办法
1707
查看次数

打字稿中的Visual Studio Code断点

使用Visual Studio Code,当我在.ts文件中设置断点时,它没有被点击。(并且在调试时不是红色的)。

但是,如果我在已编译的JS中设置一个断点,那么当我逐步执行代码时,它将把我切换到ts文件。然后,.ts文件中的所有断点都开始工作。

有没有一种方法可以使.ts文件断点正常工作(而不必首先在编译的.js文件中设置一个?

注意:我看了这个问题:使用Visual Studio Code在Typescript Jasmine测试中设置断点,这正是我的问题。但是,该问题的答案是升级到VS Code 0.10.9和Typescript 1.8.2。我正在使用VS Code 1.8.1和Typescript 2.1.4。

debugging breakpoints source-maps typescript visual-studio-code

5
推荐指数
1
解决办法
3589
查看次数

使用monodevelop调试dotnet core 2.0项目

我正在尝试在Linux centos上的Monodevelop 7.4上调试我的dotnet core 2.0应用程序。当我提出一些建议时,monodevelop就没有停止我的应用程序。

我尝试了一些配置来启用它,但没有成功。是虫子吗?还是尚未在monodevelop中实现?

在此先感谢您的帮助。

大卫

debugging mono breakpoints monodevelop .net-core

5
推荐指数
1
解决办法
1026
查看次数