카테고리 없음

디스어셈블, gcc보다는 objdump가 나은듯 하다.

게임이좋다 2011. 5. 11. 13:05

결론부터 말하면, 컴파일된 오브젝트 파일( *.o )을 objdump로 보는게 gcc의 옵션을 통해 출력하는 것보다 낫다는 것이다.


gcc의 출력은 일단 좀 산만하기도 하고, C++ 코드와 어셈블리 루틴이 정확히 매치되지 않아서 좀 보기가 힘들다.


아래의 예를 보면, C++ 구문 아래에 번역된 어셈블리 결과가 매치되어 보이는 걸 알 수 있다.

-Mintel 옵션을 붙이면, 인텔 문법의 어셈블리가 나오고,

-C 옵션을 붙이면, 함수 이름이 demangle되서 우리가 알아볼 수 있게 나온다.

하지만 인라인 함수 알아보기 힘든건 여전함.  

ps. gcc로 컴파일할 때, -g 옵션을 붙여 디버깅 정보를 넘겨줘야 한다.  안그러면 C++코드가 안나오네.