在C中检测分段错误

时间:2015-02-27 10:48:17

标签: c windows error-handling

我有Win7 Pro(32位)和CodeBlocks IDE。 我想知道有没有办法在C中检测带有分段错误的行。我的代码是PRIME1.c 我发现Stack Overflow上的某个地方可以在终端的linux上实现,但我想在Windows中这样做。 谁能告诉我怎么做? 非常感谢!

换句话说,我想知道如何在Windows 7中使用cmd中的调试器,以及它如何告诉我哪一行有问题。

我刚发现这个链接 Determine the line of C code that causes a segmentation fault? 但是,正如您所看到的,这适用于Linux。 我想知道如何在Windows cmd中执行此操作?

1 个答案:

答案 0 :(得分:0)

你可以捕获seg错误。但是,遗憾的是,无论如何都无法处理此事件或获取有关该错误的任何信息(以标准方式,有针对编译器的特定解决方法)。因此,也许可以将printf放在每一行__LINE__宏中,然后等待它失败。

#include <signal.h>
#include <conio.h>
#include <stdio.h>

void listener(int sig) {
    printf("listener: access violation");
    _getch();
}

void main() {
    char a = 10;
    char *p = &a;

    signal(SIGSEGV, listener);

    do {
        printf("%d", *p++);
    } while (1);

    _getch();
}