相关疑难解决方法(0)

如何防止gcc优化C中的一些语句?

为了使页面变脏(打开页表项中的脏位),我触摸页面的第一个字节,如下所示:

pageptr[0] = pageptr[0];
Run Code Online (Sandbox Code Playgroud)

但在实践中,gcc将忽略死店淘汰的陈述.为了防止gcc优化它,我重新编写语句如下:

volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
Run Code Online (Sandbox Code Playgroud)

似乎这个伎俩有效,但有点难看.我想知道是否有任何指令或语法具有相同的效果?而且我不想使用-O0旗帜,因为它也会带来很大的性能损失.

c gcc

95
推荐指数
3
解决办法
12万
查看次数

在C或C++代码中以编程方式为Linux上的gdb设置断点

如何以编程方式在C或C++代码中设置断点,这对于Linux上的gdb有效?

即:

int main(int argc, char** argv)
{
    /* set breakpoint here! */
    int a = 3;
    a++;  /*  In gdb> print a;  expect result to be 3 */
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ linux gdb

93
推荐指数
5
解决办法
7万
查看次数

使用GDB进行调试时可能导致问题的GCC选项

我想知道我是否可以得到一个gcc选项列表,可能导致gdb表现得很奇怪.

当然,我们都知道使用优化选项(例如-O3)会导致gdb中出现奇怪的行为,但是其他可以产生这种影响的选项是什么?

(我目前正在尝试在gdb中运行mpeg2解码器,即使在删除优化标志后我也会出现奇怪的行为......)

flags gcc gdb

7
推荐指数
1
解决办法
2164
查看次数

标签 统计

c ×2

gcc ×2

gdb ×2

c++ ×1

flags ×1

linux ×1