如何检查c中的调试是“关闭”还是“打开”?

时间:2013-11-06 19:59:55

标签: c

对于我的程序,有一节我需要知道程序是否处于调试模式。我用Google搜索,我无法通过c找到我如何实现它。有谁知道我该怎么办?

该计划是学校项目,我使用信号和增量数字。以下是调试模式的内容:

  

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

1 个答案:

答案 0 :(得分:0)

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

因此,你可能正在谈论自己需要建立的东西。

最简单的方法可能只是提供一个包含调试状态的全局变量(初始化为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变量是全局变量,可在代码中的任何位置使用,因此您可以随意访问,设置或清除它。

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