gcc GDB有时不让我输出代码?

r6l8ljro  于 2023-02-12  发布在  其他
关注(0)|答案(1)|浏览(244)

所以,我是C++的新手。我需要快速学习这门语言,以便上学。但我遇到了一些问题,这些问题使我很难使用这门语言。我下载了Visual Studio代码,并按照学校提供的步骤操作。但现在我遇到了这样的问题,有时我的代码就是无法打印。
下面是一段打印代码的示例(顺便说一句,我使用“makefile”来运行所有这些代码):

#include <iostream>
int main()
{
    std::cout << "Hello world!" << std::endl;
    return 0;
}

当然,这只是一个简单的“hello world”,但它仍然可以打印。现在我将给予一段无法打印的代码的示例:

// C++ program to sort an
// array using bucket sort
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
 
// Function to sort arr[] of
// size n using bucket sort

void bucketSort(float arr[], int n)
{
    cout << "hello" << endl;
    // 1) Create n empty buckets
    vector<float> b[n];
 
    // 2) Put array elements
    // in different buckets
    for (int i = 0; i < n; i++) {
        int bi = n * arr[i]; // Index in bucket
        b[bi].push_back(arr[i]);
    }
 
    // 3) Sort individual buckets
    for (int i = 0; i < n; i++)
        sort(b[i].begin(), b[i].end());
 
    // 4) Concatenate all buckets into arr[]
    int index = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < b[i].size(); j++)
            arr[index++] = b[i][j];
}
 
/* Driver program to test above function */
int main()
{
    cout << "hello" << endl;
    float arr[]
        = { 0.897, 0.565, 0.656, 0.1234, 0.665, 0.3434 };
    int n = sizeof(arr) / sizeof(arr[0]);
    bucketSort(arr, n);
 
    cout << "Sorted array is \n";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
    return 0;
}

这是我在网上找到的一个bucket排序的例子。首先,vector<float> b[n]行的“n”显示了一条红线,我选择了“忽略此错误”选项。其次,此代码不会输出任何内容。如果我查看“调试控制台”,我会发现以下错误:错误:无法启动调试。命令“-exec-run”的意外GDB输出。启动期间,程序退出,代码为0xc 0000139。
当我上网的时候,我看到一些人给予我降级我的gdb版本。我想试试,但是我找不到怎么做哈哈。有人能帮我让我的visual studio代码工作吗?这是编程中最让我恼火的部分。

dwthyt8l

dwthyt8l1#

ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". During startup program exited with code 0xc0000139.
此错误意味着程序根本没有启动,即在进程设置期间死亡。
在UNIX上,这通常发生在GDB exec-wrapper死亡时,但我不知道VSCode如何设置GDB,以及在什么情况下它会像这样死亡。
一般建议:

      • 如果**你想学GDB,* 而且 * 你坚持用Windows,那就在WSL2环境下学GDB。
  • 如果您不想学习GDB,请学习使用Visual Studio进行调试
  • 你应该学习你正在使用的操作系统的"本地"调试器--这样你就避免了调试各种各样的"shim",这些shim(不完美地)模拟了一个环境中的另一个环境(就像这里出现的情况)。

相关问题