C程序在outb后结束,没有抛出错误

C程序在outb后结束,没有抛出错误,c,io,C,Io,我正在编写一个简单的程序来读取C中的实时时钟。我已经设置了权限,允许该程序使用ioperm()访问正确的寄存器,并使用“sudo”运行以允许更改权限。当我调用outb()时,它可能会正确执行,也可能不会正确执行,但后续的代码都不会执行 int error = ioperm(0x70, 4, 1); printf("%d\n", error); outb(0x70, 0x04); //stops here char past[30] = "beyond outb"; pri

我正在编写一个简单的程序来读取C中的实时时钟。我已经设置了权限,允许该程序使用ioperm()访问正确的寄存器,并使用“sudo”运行以允许更改权限。当我调用outb()时,它可能会正确执行,也可能不会正确执行,但后续的代码都不会执行

int error = ioperm(0x70, 4, 1);
printf("%d\n", error);

outb(0x70, 0x04);            //stops here
char past[30] = "beyond outb";
printf("%s\n", past);

unsigned int hour = inb(0x71);

**注意:我知道这无论如何都不会产生所需的输出。我只需要进入inb(),我知道我需要从那里做什么。

你试过在调试器下运行它来查看那一行发生了什么吗?是的,我在gcc中使用了-ggdb标记进行编译,但它只说有些东西有多个定义,main是奇数,因为它在我的程序中只有一个定义。编译器不是调试器。您应该注意编译器和/或链接器错误/警告。请发一封信。如前所述,不清楚您的实际问题是什么。好的,我通过gdb在outb处的断点运行它,它在main()中输出-1程序接收信号SIGSEGV分段错误0x0000000000400699