struct tree{
#ifdef A
#define TREE_GET(x,y) &x->y
#else
#define TREE_GET(x,y) x->y
#endif
};
매크로 A가 정의되었는지 알고 싶습니다. gdb에서 사용할 수있는 명령이 있습니까?gdb를 사용하여 소스 코드를 디버깅하는 동안 매크로가 정의되어 있는지 여부를 판단하는 방법은 무엇입니까?
struct tree{
#ifdef A
#define TREE_GET(x,y) &x->y
#else
#define TREE_GET(x,y) x->y
#endif
};
매크로 A가 정의되었는지 알고 싶습니다. gdb에서 사용할 수있는 명령이 있습니까?gdb를 사용하여 소스 코드를 디버깅하는 동안 매크로가 정의되어 있는지 여부를 판단하는 방법은 무엇입니까?
컴파일 타임에 컴파일러에서 디버깅 정보의 선행 처리기 매크로에 대한 정보를 포함하도록 -gdwarf-2 및 -g3 플래그를 전달합니다. gcc documentation on -g3에서
info macro A
: -g3
및 GDB 월호 등을 사용
g++ -gdwarf-2 -g3 program.cpp -o program
컴파일
-glevel
...
레벨 3은 프로그램 내에 존재하는 모든 매크로 정의와 같은 추가 정보를 포함한다. 일부 디버거는 -g3을 사용할 때 매크로 확장을 지원합니다. gdb documenation on
info macro
& friends에서
:
정보 매크로 [-a | -all] [-] 매크로
는 현재 정의 또는 명명 된 매크로의 모든 정의를 표시하고, 소스를 설명 위치 또는 컴파일러 명령 줄이 정의 된 위치. 선택적 이중 대시는 매크로가 하이픈으로 시작될 수있는 비 C와 유사한 매크로의 인수 처리 종료 및 매크로 시작을 나타냅니다.
'TREE_GET'을 정의하는 것 외에 전역 변수를 설정하는 방법은 어떻습니까? 'A' 또는'TREE_GET'의 정의를 검사 할 수는 없지만, 변수는 아무런 문제가 없는지 확인할 수 있습니다 ... – DevSolar