솔루션 1

솔루션 1

프로그램을 단계별로 실행하려고 하면 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"
  }
 ],

관련 정보