gpt4 book ai didi

c++ - 在 main 之前调试对全局变量的赋值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:38:14 26 4
gpt4 key购买 nike

我正在尝试使用 gdb 调试 CPP 应用程序,该应用程序在分配给全局变量的表达式求值期间在到达 main 之前崩溃>。这是一个演示我的意思的最小示例:

#include <stdlib.h>
int f()
{
int i=7;
if (rand() > 30) { return i / (i*i-14*i+49); }
else { return 6 / (i*i-14*i+49); }
}
int a = f();
int main(int argc, char **argv)
{
return 0;
}

它包含一个非法的零除,这将触发算术异常。我像往常一样编译它

$ g++ -ggdb main.cpp -o main

然后尝试像这样调试它:

$ gdb ./main
(gdb) break main
(gdb) run
Program received signal SIGFPE, Arithmetic exception.
0x0000555555554689 in f () at main.cpp:5
5 if (rand() > 30) { return i / (i*i-14*i+49); }

我的问题是:如何调试发生在 main 之前的表达式求值

最佳答案

How can one debug expression evaluations that occur before main?

nothing main 没有什么特别之处。要调试它,您可以使用 break frun,或者 istartbreak f继续

在 Linux 上,你应该看看 rr ,这将允许您“回到过去”到崩溃之前——这非常好。

关于c++ - 在 main 之前调试对全局变量的赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57389958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com