나는 보통 이와 같은 디버거를 사용하므로 운 좋게도 cgdb
지금까지 호출 디버깅에 의존할 필요가 없었습니다.system
로드하는 데 약 30분 정도 걸리는 바이너리가 있는데 gdb
, 그 이후에는 기호 수가 너무 많아서 디버거가 자주 충돌합니다. 이로 인해 일반적인 작업 흐름(로드 gdb
, 중단점 추가, 문제 변수 식별 등)이 불가능해졌습니다.
Windows에서는 이 시점에서 내 코드에 많은 cout
and system("pause")
(가난한 사람의 중단점) 문을 추가하기 시작합니다. 하지만 Unix와 같은 환경에서는 이 작업을 어떻게 수행합니까?
답변1
cin
가난한 사람의 정보를 읽어보고 싶을 수도 있습니다 . 커피를 마시는 동안 계속하기보다는 pause
입력을 기다립니다 .Entersleep()
답변2
나는 가끔 이런 방법을 쓴다.
#define BRK() do { printf("%s %d\n", __FILE__, __LINE__); getchar(); } while (0)
...
BRK(); // Stop and wait for enter
또한 함수 계측이 도움이 될 수 있습니다. GCC에서는 각 함수의 시작/종료를 연결할 수 있습니다.https://stackoverflow.com/questions/2281739/automatically-adding-enter-exit-function-logs-to-a-project
답변3
cout
/ 에도 동일하게 적용됩니다 . - 보기를 cerr
사용 하거나 더 많은 정보를 얻을 수 있습니다.sleep()
man 3 sleep
man 3 usleep