相关疑难解决方法(0)

是否有一个可移植的等效于DebugBreak()/ __ debugbreak?

在MSVC中,DebugBreak()__debugbreak导致调试器中断.在x86上它相当于写"_asm int 3",在x64上它是不同的东西.在使用gcc(或任何其他标准编译器)进行编译时,我也想进入调试器.是否存在平台无关功能或内在功能?我看到了XCode的问题,但它似乎不够便携.

旁注:我主要想用它来实现ASSERT,我知道我可以使用assert(),但我也想在代码中编写DEBUG_BREAK或其他东西.

c++ portability debugbreak

51
推荐指数
6
解决办法
3万
查看次数

在gdb(MinGW)中输入重定向

我正在尝试让gdb运行带有输入重定向到stdin的程序.例如,没有gdb我会运行这样的程序:

prog < input.txt
Run Code Online (Sandbox Code Playgroud)

现在在gdb中,通常的做法是run < input.txt.但是,它对我不起作用,当这样做时,没有任何东西被重定向到stdin.

我正在使用Windows与MinGW.可能是什么问题呢?

gdb mingw

20
推荐指数
2
解决办法
5254
查看次数

gdb 断点在错误的行号中被击中

在 gdb 中,我设置了一个断点,让 gdb 在满足第一个if条件时停止。但是 gdb 停在另一行并且if不满足条件。我读过gdb breakpoint does not get hit,但它仍然没有解决。我认为 gdb 仅在if (a == 1)遇到并在第 3282 行时停止。我错了吗?

#pragma GCC push_options
#pragma GCC optimize("O0")

static void __attribute__ ((noinline)) search(int a, int b) 
{  
    // other code here 

    if (a == 1) {
        printf("condition1\n"); 
        printf("condition1\n"); // line 3282, breakpoint is set here   
    }
    if (b == 1) {              // line 3284,  in fact, gdb stops in this line    
        printf("condition2\n");
        printf("condition2\n");
    }
} …
Run Code Online (Sandbox Code Playgroud)

c linux gcc gdb

3
推荐指数
1
解决办法
3417
查看次数

标签 统计

gdb ×2

c ×1

c++ ×1

debugbreak ×1

gcc ×1

linux ×1

mingw ×1

portability ×1