プログラムを段階的に実行しようとすると、gdbでこのエラーが発生します。
std::ostream::operator<< (this=0x6013c0 <std::cout@@GLIBCXX_3.4>, __n=2)
at /build/gcc/src/gcc-build/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/ostream.tcc:110
110 /build/gcc/src/gcc-build/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/ostream.tcc: No such file or directory.
これが私がデバッグしたいプログラムです。
#include <iostream>
int printPrime(int, int);
int main()
{
int t, c;
std::cin >> t;
c = t;
int m[t], n[t];
while (t--) {
std::cin >> m[t] >> n[t];
}
while (c--) {
printPrime(m[c], n[c]);
std::cout << std::endl;
}
return 0;
}
int printPrime(int m, int n)
{
do {
int c = m;
int lim = c>>2;
if (c <= 1) continue;
while (c-- && c>lim) {
if (m%c == 0) {
if (c == 1) {
std::cout << m << std::endl;
break;
}
break;
}
}
} while(m++ && m<=n);
}
プログラムコードに問題はなく、正常に実行されます。これは、ArchにGDBをインストールするときに発生する問題のようです。このエラーは、またはが発生したときにcin
表示されますcout
。
Ubuntu VMで実行しようとすると、このエラーは表示されません。
答え1
この問題に関するバグレポートを作成しました。https://bugs.archlinux.org/task/47220
これは、ostreamソースファイルが見つからないために発生します。
ソリューション1
あなたはできます彫刻libstdc++ ライブラリ:
sudo strip /usr/lib/libstdc++.so.6
これにより、gdbはソースファイルを開こうとしません。エラーは再び表示されません。
以下を再インストールすると、アンインストールされていないバージョンに戻すことができます。
sudo pacman -S gcc-libs
ソリューション2
以下を追加できます。交換ルールGDBでは:
gdb tst
(gdb) set substitute-path /build/gcc/src/gcc-build/x86_64-unknown-linux-gnu/libstdc++-v3/include /usr/include/c++/5.2.0
答え2
2017アップデート - 今すぐ可能です。launch.json
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"text": "set substitute-path /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include /usr/include/c++/7.2.0"
}
],