VSCode";无法打开';abs.c';: 我在C++中有一些简单的代码(见下文),它运行良好,可以在微软Visual Studio./P>中成功调试。 #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";无法打开';abs.c';: 我在C++中有一些简单的代码(见下文),它运行良好,可以在微软Visual Studio./P>中成功调试。 #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; },c++,debugging,visual-studio-code,ubuntu-18.04,C++,Debugging,Visual Studio Code,Ubuntu 18.04,调试器出现异常“无法打开'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有什么问题?您的visual studio代码没有问题,您根本没有abs的源代码,因此无法进入它。

调试器出现异常“无法打开'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有什么问题?

您的visual studio代码没有问题,您根本没有
abs
的源代码,因此无法进入它。忽略错误,点击“走出去”返回您的代码。

您的visual studio代码没有问题,您根本没有abs的源代码,因此无法进入。忽略错误,点击
step out
返回您的代码。

在调试栏的
find_common_divider
的第一行设置断点,然后按调试栏的
continue
find_common_divider
的第一行设置断点,然后按调试栏的
continue
,我认为您可以使用
sudo-apt-install-glibc-source
如果您真的需要或希望进入当前在ubuntu中使用的glibc实现,我认为您可以使用
sudo-apt-install-glibc-source
安装源代码,如果您真的需要或希望进入当前在ubuntu中使用的glibc实现。
int divider = find_common_divider(abs(p), abs(q));