VSCode“无法打开'abs.c':

时间:2020-04-08 13:22:58

标签: c++ debugging visual-studio-code ubuntu-18.04

我有一些用C ++编写的简单代码(见下文),效果很好,可以在Microsoft Visual Studio中成功调试。

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cmath>
#include <map>
#include <set>
#include <algorithm>
#include <stdlib.h>
#include <iomanip>

using namespace std;

class Rational {
private:
    int numerator;
    int denominator;

public:
    Rational() {
        numerator = 0;
        denominator = 1;
    };
    Rational(int p, int q) {
        int divider = find_common_divider(abs(p), abs(q));
        p = p / divider;
        q = q / divider;
        if ((p < 0) && (q < 0)) {
            p = abs(p);
            q = abs(q);
        }
        else if ((p > 0) && (q < 0)) {
            p = -p;
            q = abs(q);
        }
        if (p == 0)
            q = 1;
        numerator = p;
        denominator = q;
    };

    int Numerator() const {
        return numerator;
    };
    int Denominator() const {
        return denominator;
    };
    int find_common_divider(int N1, int N2) {
        while ((N1 > 0) && (N2 > 0)) {
            if (N1 > N2)
                N1 %= N2;
            else
                N2 %= N1;
        }
        return N1 + N2;
    };

};

int main() {
    {
        const Rational r(3, 10);
        if (r.Numerator() != 3 || r.Denominator() != 10) {
            cout << "Rational(3, 10) != 3/10" << endl;
            return 1;
        }
    }

    {
        const Rational r(8, 12);
        if (r.Numerator() != 2 || r.Denominator() != 3) {
            cout << "Rational(8, 12) != 2/3" << endl;
            return 2;
        }
    }

    {
        const Rational r(-4, 6);
        if (r.Numerator() != -2 || r.Denominator() != 3) {
            cout << "Rational(-4, 6) != -2/3" << endl;
            return 3;
        }
    }

    {
        const Rational r(4, -6);
        if (r.Numerator() != -2 || r.Denominator() != 3) {
            cout << "Rational(4, -6) != -2/3" << endl;
            return 3;
        }
    }

    {
        const Rational r(0, 15);
        if (r.Numerator() != 0 || r.Denominator() != 1) {
            cout << "Rational(0, 15) != 0/1" << endl;
            return 4;
        }
    }

    {
        const Rational defaultConstructed;
        if (defaultConstructed.Numerator() != 0 || defaultConstructed.Denominator() != 1) {
            cout << "Rational() != 0/1" << endl;
            return 5;
        }
    }

    cout << "OK" << endl;
    return 0;
}

但是当我从行开始在VSCode(UBUNTU 18.04)中调试时 {(1)}在main()中,并“逐步”进入

const Rational r(3, 10)

调试器给出异常“无法打开'abs.c':无法读取文件'/build/glibc-OTsEL5/glibc-2.27/stdlib/abs.c”(错误:无法解析不存在的文件'/ build / glibc-OTsEL5 / glibc-2.27 / stdlib / abs.c')。”

Microsoft Visual Studio中不存在该异常,调试器转到函数“ find_common_divider”。

我的VSCode有什么问题?

1 个答案:

答案 0 :(得分:2)

Visual Studio代码没有任何问题,您根本没有abs的源代码,因此无法介入。忽略错误,点击step out返回您的代码。