0

对于我的程序,有一个部分我需要知道程序是否处于调试模式。我用谷歌搜索了它,但我找不到如何通过 c 实现它。有谁知道我该怎么做?

该程序是我使用信号和递增数字的学校项目。以下是调试模式的说明:

当调试“开启”时,您的程序应该每秒钟报告一次总数(使用alarm())并忽略 SIGUSR1。当调试“关闭”时,alarm() 应该被关闭并且你的程序应该像以前一样处理 SIGUSR1(即报告总的状态)。SIGINT 应该使您的程序报告运行总数,然后终止。

4

1 回答 1

0

除了用于控制调用的NDEBUG标志外, C 本身没有调试模式的概念。assert()

因此,您可能正在谈论您需要在自己身上构建的东西。

最简单的方法可能只是提供一个包含调试状态的全局变量(初始化为 false),然后在相关时间设置或清除它。

例如,如果程序的第一个参数是,则此代码段将使用命令行参数来设置调试-d

#include <stdio.h>

int debugging = 0;  // init to false

int main (int argc, char *argv[]) {
    if ((argc > 1) && (strcmp (argv[1], "-d") == 0))
        debugging = 1;
    printf ("Debugging is %s\n", debugging ? "on" : "off");

    // rest of program.

    return 0;
}

debugging变量是全局变量,可在代码中的任何位置使用,因此您可以随意访问、设置或清除它。

您甚至可以在中断服务例程中设置或清除它,因此从外部向程序发送信号可以改变其状态。

于 2014-07-03T06:52:52.353 回答