gpt4 book ai didi

c - 使用 DDD(数据显示调试器)时的 SIGSEGV

转载 作者:行者123 更新时间:2023-11-30 16:38:25 24 4
gpt4 key购买 nike

这是我第一次使用 DDD,而且我对所讨论的主题(unix 环境中的 c)非常缺乏经验,所以我可能会忽略一些东西。当我尝试从文件中执行 fscanf 时,我收到段错误,这在正常的 gcc 编译中不会发生。其功能如下:

void read_config(){
FILE *fp;
fp = fopen("config.txt","r");
fscanf(fp,"TRIAGE=%dDOCTORS=%dSHIFT_LENGTH=%dMQ_MAX=%d ",&data.triage,&data.doctors,&data.shift,&data.mq_max);
}

读取 fscanf 行后,它会在 DDD 中给出以下消息:

Program received signal SIGSEGV, Segmentation fault. 0xb7e58e1e in __isoc99_fscanf () from /lib/i386-linux-gnu/lib.so.6

我无法弄清楚是什么原因导致了这个问题。提前致谢!

最佳答案

I can't figure out what might be causing this issue.

在调试器中查看fp 的值。它将是NULL

您应该始终检查您调用的每个系统函数的返回值。

the file is in the same directory as the executable

那没关系。重要的是当您调用 fopen 时,您的当前目录是什么。

除非您指示 DDD 更改为 config.txt 所在的目录,否则 DDD 很可能是从其他目录运行的。

关于c - 使用 DDD(数据显示调试器)时的 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47498028/

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