이것은 gdb set overwrite logging on이 gdb.txt를 올바르게 덮어 써야합니까? a와 다소 관련이 있습니다. .

일부 응용 프로그램의 세션을 실행하고 있다고 가정 해 보겠습니다. 예를 들어 qbittorrent의 예를 다시 살펴 보겠습니다.

이전에 공유 된 것처럼 실행이 발생하는 방식입니다.

$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run 

내가 아는 한 가지 방법은 응용 프로그램을 정상적으로 종료하는 것입니다. 그러나 때때로 응용 프로그램이 중단됩니다. / 너무 많은 시간이 걸리거나 단순히 응답하지 않습니다.

그런 다음 남은 유일한 옵션은 CTRL+C를 사용하는 것입니다.이 방법을 이해하면 기본 애플리케이션이 종료됩니다. , 우리의 예제에서 qbittorrent를 사용하면

(gdb) quit 

애플리케이션을 종료하는 다른 방법이 있는지 여부를 확인하고 gdb를 종료 할 수 있습니다. gdb 세션이 계속 실행되거나 유일한 방법은 위에서 언급 한 조잡한 방법입니다.

AFAI는 응용 프로그램 프로세스를 종료하는 것이 첫 번째가 아닌 마지막 솔루션이어야한다는 것을 알고 있습니다.

댓글

  • 기본 설정에서 gdb에서 실행할 때 Ctrl-C는 응용 프로그램을 종료하지 않고 디버거에 침입하여 결정할 수 있습니다. 해야 할 일. cont를 사용하여 " 신호를 삼키면 " 애플리케이션이 방해받지 않고 계속됩니다. 또는 signal 2를 사용하여 SIGINT (2)를 애플리케이션에 전달합니다. 또는 kill를 사용하여 애플리케이션을 종료합니다.

Answer

이를 위해 신호를 사용할 수 있습니다. 프로그램을 시작하기 전에 USR1 또는 USR2를 설정하여 gdb에 영향을주지 않고 프로그램 :

handle SIGUSR1 nopass 

그런 다음 프로그램을 실행하고 중지해야 할 때 다음에서 kill -USR1를 실행합니다. 적절한 (자식) pid를 가진 또 다른 쉘. gdb는 응용 프로그램을 일시 중지 한 다음 중단 점을 추가하고 상태를 검사 할 수 있습니다. 원하는 경우 cont.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다