오류없이 응용 프로그램이 중단되면 확인할 수있는 로그가 있습니까?


18

때로는 출력 오류가없는 일부 응용 프로그램 충돌이 발생합니다 ( 내 경우에는 conky , 아마도 내 구성 중 하나가 올바르지 않습니다).

오류가 발생한 이유를 이해하기 위해 확인할 수있는 오류 로그가 있습니까?

답변:


14

응용 프로그램에 따라 다릅니다. 응용 프로그램마다 로깅 시스템이 다릅니다. 시스템에서 실행되는 모든 프로그램의 모든 출력을 포함하는 하나의 중앙 로그가 없습니다.

많은 프로그램이 로그 파일을 디렉토리에 넣습니다 /var/log. 특히 파일 /var/log/syslog(또는 /var/log/messages)은 "시스템 로거"의 출력을 포함하는데, 이는 시스템이 로깅을 위해 사용할 수있는 시스템에서 제공하는 서비스입니다. 그러나 모든 프로그램이이를 사용하는 것은 아닙니다. 대부분 일반적으로 사용하는 그래픽 응용 프로그램이 아니라 해당 파일에서 하위 수준 시스템 서비스의 메시지를 찾습니다.

표준 로그 파일의 위치에 대한 자세한 내용 을 읽을 수 있습니다 .


6

충돌 파일은 /var/log/crashes/apport와 함께 사용하여 버그를보고합니다. 을 사용하여 코어 덤프를 추출하고 apport-unpack해당 코어 덤프를 gdb를 통해 넣은 다음 프로그램 충돌 원인을 확인할 수 있습니다.

이것은 모두 당신이 프로그래머라고 가정합니다. 당신이하지 않으면 ... 어쨌든 충돌을 해결할 수 없습니다!


1
"이것은 모두 프로그래머라고 가정합니다. 그렇지 않다면 ... 잘못되면 충돌을 해결할 수 없습니다!" 오픈 소스를 사용하면 우리 모두 자신의 위험에 따라 문제를 해결하려고 노력할 수 있습니다.)
Strae

@DaNiel :별로 요! 프로그래머가 아니고 응용 프로그램 코드를 잘 이해하지 못한다면 버그가있는 코드가 엉망이 될 것입니다. :)
AntonioCS

1
프로그래머가 아니더라도 때때로 코어 덤프를보고 있으면 문제에 대한 아이디어를 얻을 수 있습니다. 예를 들어, 어떤 종류의 그래픽 루틴에서 충돌하는 것처럼 보입니다. 아마도 디스플레이 드라이버를 업데이트해야 할 수도 있습니다.
user1242

2
버그 보고서 / 포럼의 오류를 설명하는 데 도움이됩니다.)
Strae

1
gdb를 사용할 수있는 프로그래머가 아닌 사람을 알고 있습니까? 나는 프로그래머이며 bt full"아무런 기호가없는 백 트레이스를 보아라 .... 추적 기호를 설치하고 충돌을 재현해야한다." 중단 점 ... 그것이 내가 얻은 가장 진보 된 것입니다.
maco

3

conky의 경우에 항목이있을 수도 있습니다 $HOME/.xsession-errors.


2

일부 응용 프로그램에는 -d, -D, --debug 등과 같은 디버깅을 설정하는 데 사용할 수있는 플래그가 있습니다. 응용 프로그램 설명서 페이지 ( man [my-app])를 확인하거나 -h 플래그로 응용 프로그램을 실행하여 선택권.

많은 GUI 앱이 $ HOME / .xsession-errors에 쓰므로 출력을 확인하기에 좋습니다.

maco의 apport는 아마도 좋은 디버그 정보를 얻는 가장 확실한 방법 일 것입니다. 때로는 충돌을 포착하지 못합니다.

다른 모든 방법이 실패하면 gdb에서 앱을 실행하여 정보를 강제로 제거 할 수도 있습니다. 다음과 같습니다.

$ gdb my-app

(gdb) run

... 충돌에 필요한 것은 무엇이든한다 ...

(gdb) bt full

거기에서 가십시오.

gdb 경로를 사용하는 경우 앞에서 언급 한대로 기호를 설치해야합니다. 핸드 홀딩 조언 은 https://wiki.ubuntu.com/DebuggingProgramCrash 를 참조 하십시오 .


의심 할 여지없이 제게 가장 좋은 대답
Claudix

1

당신은 갈 수 /var/log/messages or crashes당신이 실행할 수있는 grep사람들에 명령을하고 파일을 찾는 것은 꽤 큰 때때로을 얻을 수있는 응용 프로그램을 검색합니다. 응용 프로그램과 관련된 정보를 반환합니다. :)


1

.desktop 실행기 파일에서 응용 프로그램을 시작하는 경우 Terminal=true.desktop 파일에 옵션 을 추가 하십시오. 이것은 프로그램을 실행할 때 터미널을 열고 터미널의 출력은 처음에 명령 줄을 통해 프로그램을 실행했는지 여부와 비슷합니다. 이런 방식으로 GUI가 충돌하거나 중단되면 어떤 텍스트 출력이 GUI로 연결되는지 확인할 수 있습니다.


이것은 무엇을 하는가? 나는 이미이 세트를 가지고 있으며 추가로 아무것도 기록하지 않습니다.
Matt

답변을 수정하여 귀하의 질문에 답변하려고했습니다. 이게 말이 되나요?
Selah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.