对于我的程序,有一个部分我需要知道程序是否处于调试模式。我用谷歌搜索了它,但我找不到如何通过 c 实现它。有谁知道我该怎么做?
该程序是我使用信号和递增数字的学校项目。以下是调试模式的说明:
当调试“开启”时,您的程序应该每秒钟报告一次总数(使用
alarm()
)并忽略 SIGUSR1。当调试“关闭”时,alarm() 应该被关闭并且你的程序应该像以前一样处理 SIGUSR1(即报告总的状态)。SIGINT 应该使您的程序报告运行总数,然后终止。
对于我的程序,有一个部分我需要知道程序是否处于调试模式。我用谷歌搜索了它,但我找不到如何通过 c 实现它。有谁知道我该怎么做?
该程序是我使用信号和递增数字的学校项目。以下是调试模式的说明:
当调试“开启”时,您的程序应该每秒钟报告一次总数(使用
alarm()
)并忽略 SIGUSR1。当调试“关闭”时,alarm() 应该被关闭并且你的程序应该像以前一样处理 SIGUSR1(即报告总的状态)。SIGINT 应该使您的程序报告运行总数,然后终止。
除了用于控制调用的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
变量是全局变量,可在代码中的任何位置使用,因此您可以随意访问、设置或清除它。
您甚至可以在中断服务例程中设置或清除它,因此从外部向程序发送信号可以改变其状态。