최적화를 비활성화한 후에도 gdb stl 함수가 여전히 인라인으로 나타납니다.

최적화를 비활성화한 후에도 gdb stl 함수가 여전히 인라인으로 나타납니다.

우분투 14.04에서 예쁜 인쇄가 활성화된 Python 지원으로 gdb-7.12를 구축하고 다음과 같은 방식으로 gdbinit 파일을 구성했습니다.https://sourceware.org/gdb/wiki/STLSupport.

그러나 컨테이너의 크기를 인쇄할 때마다:

p ivec.size()
Cannot evaluate function -- may be inlined

제가 사용하고 있는 MCVE 입니다

#include <vector>

using namespace std;

int main(){
  vector<int> ivec;
  return 0;
}

다른 컴파일 옵션을 시도했습니다

g++-6 -g -O0 -fno-inline-functions -gdwarf-2 Source.cpp --std=c++14

실제로 저는 위 옵션을 모두 조합하여 시도해 보았지만 항상 같은 문제가 발생했습니다.

문제가 해결되었는지 확인하기 위해 gdb-7.11(소스에서 빌드)로 전환을 시도하고 g++-4.8로도 전환했지만 둘 다 문제를 해결하지 못하는 것 같습니다.

내가 뭘 잘못했나요? 옵션을 제공하는 특정 순서가 있나요? -O0 옵션이 유효한지 확인하는 방법이 있습니까?

답변1

이 함수를 컴파일하려면 vector::size()를 호출해야 합니다. 이는 클래스 템플릿이므로 컴파일되지 않습니다. 통화도 같은 맥락이어야 한다고 생각하는데, 잘 모르겠습니다.

관련 정보