0

我更多的是一个普遍的问题:如何处理由多个函数组成的ac程序的执行路径?例如,我有以下 c 程序:

 void test_if_statement(int num)
{
    if (num > 0)
        //do smth
        ;
    else
        //do smth else
        ;
}

int main(void)
{
    int num;
    printf("enter an int value:");
    scanf("%d", &num);
    test_if_statement(num);
    return 0;
}

目前我正在使用这样的东西来查看我的函数在 if 语句中的位置:

void test_if_statement(int num)
{
        if (num > 0)
            printf("i'm here\n");
            //do smth
        
        else
            printf("now i'm there\n");
            //do smth else
}

我怎样才能保持简单和更通用?;)将 printf 放在每个 if-else 对中似乎过于庞大......

4

3 回答 3

0

printf使用语句来跟踪或记录程序流以用于学习或开发期间的测试并没有错。但是一个好的调试器可能也可以达到目的,而不必添加内联代码。
根据您的环境,有大量可用的调试器选项

以下是调试程序的概述:

调试器是一个程序,它允许您一次单步执行另一个程序。这在尝试识别不正确的代码并分析程序如何“流动”时非常有用。关键概念包括:断点、步进和查看数据。

您可以使用调试器确定的关键事项是:

  • 程序的流程(逐行接下来会发生什么)
  • 变量的创建
  • 存储在每个变量中的数据
  • 功能的进入/离开
  • 所做的计算
  • IF 语句或 ELSE 语句的输入
  • 代码的循环。

更多细节在这里

于 2020-12-29T13:32:43.437 回答
0

这通常是调试器的工作,其中大部分允许一次单步执行一个语句。它们还允许您设置断点以在特定位置暂停执行、在变量更改时暂停执行的观察点等。

在不了解您的环境的情况下,我无法推荐使用特定的调试器。如果您使用 gcc 构建代码,那么配套调试器(通常)是 gdb。您将需要-g在编译时使用该标志来启用源代码级调试。它不是最友好的调试器,但它非常全面。如果您在 Windows 上的 Visual Studio 环境中构建,则应该有一个调试器作为 IDE 的一部分。

于 2020-12-29T13:33:31.550 回答
0

如果您使用 IDE 来编写代码,那么它将具有用于调试器的内置工具,您唯一需要做的就是设置断点,然后当程序运行时,您的代码会在中断时暂停-点被击中。IDE 还提供了在那个时刻查找变量值的工具。

如果您没有使用 IDE 并且您的问题特别明确C,您可以考虑使用GDB. 看看这里,以更好地了解如何使用 GDB 调试程序。

于 2020-12-29T13:36:10.883 回答