2011-12-17 5 views
3

GNU 컴파일러를 사용하고 디버그 모드에서 C++로 작성된 것으로 보이는 Linux 실행 파일이 있습니다. 나는 내 결론이 정확하고 적어도 그것을 다소 가독성이있는 것으로 디 컴파일 할 가능성이 있는지 알고 싶다. 코드 조각이실행 파일에 대한 정보 확인

__gnu_cxx::__concurrence_lock_error 

발췌문 3

ELF file ABI version invalid ◻ invalid ELF header ◻ ELF file OS ABI invalid 

발췌문 1

</heap> 
<malloc version="1"> 
nclears >= 3 Arena %d: 
system bytes = %10u 
in use bytes = %10u 
Total (incl. mmap): 
max mmap regions = %10u 

다음은 실행에서 몇 표지 미리보기를의

발췌문 4

GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 ◻ 
GCC: (Ubuntu/Linaro 4.4.4-14ubuntu1) 4.4.5 20100909 (prerelease) 

발췌문 5

_dl_debug_vdprintf pid >= 0 && sizeof (pid_t) <= 4  
... 
_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT 

파일이 같이 읽을 수있는 텍스트로 가득하다 (하지만 대부분은 여전히 ​​횡설수설). 나는 릴리스 모드로 컴파일 된 실행 파일에서 이런 종류의 텍스트를 찾아야한다고 생각하지 않는다. (다시,이 문제에 대한 나의 지식은 매우 제한적이다.) 이 실행 파일에서 어떤 디 컴파일러를 사용해야합니까?

+0

이 문자열은 프로그램의 문자열 리터럴 일뿐입니다 (마지막 문자열은 예외 일 수 있습니다). 릴리스 또는 디버그 모드에서 프로그램에서 사용하는 문자열을 읽을 수 있습니다. 또한, 디 컴파일할지 여부를 결정하는 대신, 디 컴파일을 시도하지 않는 이유는 무엇입니까? –

+0

@Seth 나는 그것을 의심한다. 나는 그 프로그램이하는 일을 알고 그것들과 아무런 관련이 없다. 그것의 공용 영역은 영어로조차 없다. –

+1

그들은 라이브러리의 사용자가 아닌 라이브러리가 참조하는 문자열이 될 것이므로 프로그램이 작성된 언어는 중요하지 않습니다. 라이브러리가 디버그 모드에서만 또는 둘 모두 릴리스와 디버그에서 문자열을 사용하는지 여부에 관계없이, 알아. –

답변

1

main에 중단 점을 넣고 실행 파일을 실행하지 마십시오. 디버그 모드 인 경우 전체 소스 코드를 볼 수 있습니다 (소스 파일이 동일한 경로에있는 경우). 당신은 각 단계를 밟아 정확한 인수로 함수 호출을 볼 수 있습니다.

+0

만약 내가 어떻게 알았 더라면. :)하지만 팁 주셔서 감사합니다, 나는 그것을 조사합니다. –