나는 프로그램, 즉,이 같은 구조에 정의되어있다c/C++로 최신 리눅스 코어 덤프를 검색하는 방법은 무엇입니까?</p> <pre><code>struct foo { int magic; int bar; }; </code></pre> <p>을 그리고이 구조체의 객체를 생성 할 때, 나는 항상 다음을 수행하십시오 :
object.magic = 654321;
이 프로그램은 결국 코어 죽을 것이다 덤프가 생성되었습니다.
자동으로 모든 막대 값을 모두 계산하는 C++ 프로그램을 만들 수 있습니까? 예를 들어 합계를 계산할 수 있습니까?
추신. 지금까지 저는 코어를 바이너리로 열어서 654321을 16 진수로 변환 할 수 없다는 것을 조사했습니다 (16 진수 편집기에는 아무 것도 없습니다). Wikipedia는 현대의 유닉스 시스템이 ELF를 사용한다고 말합니다.하지만 유감스럽게도 필자는 미숙 한 프로그래머이므로 모든 헤더 시스템을 이해하지 못합니다.
전체 헤더 구조를 배우지 않고이 막대를 가져올 수있는 방법이 있습니까?
마법 번호 '0x654321'을 (를) 작성하면 바이너리에서 "eC!"문자열을 검색 할 수 있습니다. 또는 "! Ce", 엔디안에 따라. –
오브젝트가 힙에 있는지 확인하십시오. 스택에서 컴파일러가이 값을 최적화하지 않았을 수 있습니다. 또한 코어 파일의 크기가 무제한인지 확인하십시오. 아마도 잘 렸을 것입니다. –