Adolf K Wiseman 2022-11-06 09:30 采纳率: 70%
浏览 408
已结题

vscode运行代码出错ERROR: GDB exited unexpectedly. Debugging will now abort.

用Ubuntu20.04.5的vscode运行一个生成数据的代码,运行到图示位置时出错:
ERROR: GDB exited unexpectedly. Debugging will now abort.
The program '/home/zhang/project/MSFinal-master/BDMRS/gen_data' has exited with code -1 (0xf.).
经过断点运行判断是执行完循环后就出错,各位知道是什么原因吗?

img

这是define.h文件

/***
 * This code .h file define size and struct used.
 */

#define FILE_SIZE       500
// only 26*n is support due to invert matrix function
// only 26 and 676 add to git
#define DICT_SIZE       650
#define FILE_PATH       "../doc/FILE0001.txt"
#define MATRIX_PATH     "../Matrix/Matrix650trans.txt"
#define MATRIXinv_PATH  "../Matrix/Matrix650inv.txt"
#define SK_PATH         "./SK.txt"

// struct of node
typedef struct tree_node {
    int ID; // node ID
    double D[2][DICT_SIZE]; // index data
    struct tree_node *Pl; // pointer to left node
    struct tree_node *Pr; // pointer to right node
    int FID; // pointer to file, use file's ID here
} Node;

// max function
double max( double a, double b ){ return (a>b)?a:b; }

这是出现问题的gen_data.c文件

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <time.h>
#include "define.h"

/***
 * This code generate the data used in search
 */

int main() {
    int i, j;
    FILE *fp;
    struct stat st = {0};

    // initial the random seed
    srand( time(NULL) );
    // if no dir "doc", creat it
    if (stat("./doc", &st) == -1) {
        mkdir("./doc", 0700);
    }

    // for each file
    for( i = 0; i < FILE_SIZE; i++ ) {
        //initial file name
        char filename[] = FILE_PATH;
        char *ptr = strstr(filename, "FILE");
        sprintf(ptr, "FILE%04d.txt", i+1);
        fp = fopen(filename, "w");

        // for each keyword in file
        for( j = 0; j < DICT_SIZE; j++ ) {
            // initial keyword name
            char word[] = "aa";
            word[0] = 'a' + j / 26;
            word[1] = 'a' + j % 26;

            // generate keyword size, half set to 0
            int a = rand()%(DICT_SIZE*2) - DICT_SIZE;
            if( a < 0 ) a = 0;
            fprintf(fp, "%s %d\n", word, a);
        }

        // close file
        fclose(fp);
    }

    return 0;
}
  • 写回答

4条回答 默认 最新

  • X-道至简 2022-11-06 10:00
    关注

    两个地方改改试一下
    第一个判断fp是否打开文件成功 函数调用最好判断下返回值
    第二个设置word[2] = '\0'

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月14日
  • 已采纳回答 11月6日
  • 创建了问题 11月6日

悬赏问题

  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏
  • ¥15 STM32串口接收问题
  • ¥15 腾讯IOA系统怎么在文件夹里修改办公网络的连接
  • ¥15 filenotfounderror:文件是存在的,权限也给了,但还一直报错
  • ¥15 MATLAB和mosek的求解问题
  • ¥20 修改中兴光猫sn的时候提示失败
  • ¥15 java大作业爬取网页
  • ¥15 怎么获取欧易的btc永续合约和交割合约的5m级的历史数据用来回测套利策略?
  • ¥15 有没有办法利用libusb读取usb设备数据
  • ¥15 为什么openeluer里面按不了python3呢?