c - Netbeans 8.1 C 调试器错误?

标签 c debugging netbeans gdb netbeans-8.1

这是我的代码,它将十六进制数(以字符串形式给出)转换为十进制:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int val(char);

int main() {
    char s[100];
    int sum = 0, mult = 1,i,len;
    printf("Hexadecimal number:\n");
    fflush(stdout);
    fgets(s,100,stdin);
    len = strlen(s);
    for (i = len-2; i >= 0; i--) {
        sum += val(s[i])*mult;
        mult *= 16;
    }
    printf("%d\n",sum);
    fflush(stdout);
    return (EXIT_SUCCESS);
}

int val(char c) {
    switch(c) {
        case '0': return 0;
        case '1': return 1;
        case '2': return 2;
        case '3': return 3;
        case '4': return 4;
        case '5': return 5;
        case '6': return 6;
        case '7': return 7;
        case '8': return 8;
        case '9': return 9;
        case 'a': return 10;
        case 'b': return 11;
        case 'c': return 12;
        case 'd': return 13;
        case 'e': return 14;
        case 'f': return 15;
        default: return -1;
    }
}

1. 我向 int sum = 0, mult = 1,i,len; 添加断点

2.我开始调试

3.我使用Step Into - 变量显示在右侧

4. 我已进入 printf("Hexadecimal number:\n");fflush(stdout); ,它显示在控制台中。

5.箭头位于fgets(s,100,stdin);旁边,我进入

6.我不能再使用步进器了,我认为这是我应该在标准输入中给出字符串的时刻。

7.我尝试给出字符串,没有任何反应,我可以再次给出它,什么也没有发生。

<小时/>

其他示例:

1. 我向 len = strlen(s); 添加一个断点(在 fgets 之后)

2.我开始调试

3. 进入 fgets 时得到相同的结果(前面的示例)

<小时/>

如果不调试,程序运行正常。我也尝试了 Cygwin 和 MinGW,结果相同。这是一个错误还是我错过了什么?我应该举报吗?

最佳答案

有一个解决方法: 在项目属性中的运行下,为控制台类型选择外部终端。 (这是 MinGW 所需要的。)

<小时/>

对于 Cygwin,问题在于 Netbeans 以某种方式使用 64 位安装以及选定的 32 位 bin 目录。在选项|C/C++|构建工具中选择 64 位 Cygwin bin 目录后,调试器也使用内部终端选项。

关于c - Netbeans 8.1 C 调试器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098451/

相关文章:

java - 使用 cargo 插件调试 Tomcat 部署的代码

json - PWA 调试 chrome "add to homescreen"按钮没有执行任何操作

mysql - 如何在netbeans中创建自动化的mysql脚本

java - 如何在字符串中存储字符?

c - 正确使用结构和指针

c - pthreads 向特定线程发出信号

c - Obj 中奇怪的 mod 行为。 C

node.js - (问)我们如何使用 AWS api gateway 调试本地 websocket

C++ NetBeans : How to link my . o 文件到我的项目?

c - 使用 malloc 创建一个包含来自 c 中另一个字符串的元素的字符串