2012-04-03 4 views
0

> 2 개의 응용 프로그램 ->/usr/bin/python 및/usr/bin/app1에서 코어 덤프가 생성되었습니다. 나는 덤프가gdb로 여러 응용 프로그램에서 생성 된 코어 덤프 분석

gdb /path/to/app /path/to/core 

으로 분석 할 수 있습니다 알고 있지만, 아규먼트에서 두 응용 프로그램을 포함하는 방법은 무엇입니까?

나는 gdb '/ usr/bin/python/usr/bin/app1'core.xxx를 시도했지만 제대로 된 것 같지 않습니다.

제안 사항?

답변

1

gdb의 단일 호출로 원하는 것을 얻을 수 없다고 생각합니다. 그러나 다른 터미널 창에서 gdb을 두 번 실행할 수 있습니다. 나는 그 일을 한 번 이상했고, 꽤 잘 작동합니다 (물론 당신의 두뇌가 약간 과부하 될 수 있다는 것을 제외하고).

gdb 프로세스는 하나의 단일 디버그 프로세스 또는 (사후 디버그를 위해) 하나의 단일 core 파일을 사용하여 단일 프로그램 만 디버깅 할 수 있습니다.

그리고 주어진 core 파일은 하나의 단일 프로세스 (여러 개가 아닌)의 비정상적인 종료로 인해 생성되므로 귀하의 질문을 이해할 수 없습니다.

명백히 결함이있는 C 코드로 인해 python의 일부 실행이 중단되었을 가능성이 있습니다. python3-all-dbg 패키지 또는 유사한 패키지를 설치하여 파이썬의 디버그 가능한 변형을 제안한 다음 gdb을 사용하십시오. 물론, 디버깅이 가능하도록 파이썬에 플러그인 된 C 코드를 컴파일하십시오. 파이썬 가비지 컬렉터의 불변성을 위반했을 수도 있습니다.

+0

코어 파일을 gdb 파이썬 core.xxx로 디버깅 해보았을 때 ** 코어가 '/ usr/bin/python/usr/bin/app1'**에 의해 생성 된 디버거에 나타납니다. 나는 이것을 2 개의 프로세스에 의해 생성되었음을 의미하는 것으로 받아 들였지만, 파이썬 프로세스 인 app1이 그러한 메시지를 생성하도록 만들었다 고 생각하기 시작했습니다. – avid

+0

아니요,'gdb'는 오류가있는 전체 명령 줄 (기술적으로'Python의'main'에 전달 된'argv' 배열)을 보여줍니다. 하나의 프로세스 만 코어 덤프를 생성했습니다. –