지도 파일을 리소스로 추가하고 시스템을 실행할 때마다 파일을 추출하여 맵 파일이 항상 올바른지 확인하고 지원 수명을 늘리십시오. 델파이 7에서는 맵 파일을 리소스로 사용하여 프로젝트를 컴파일 할 수 있지만 맵이 잘못되었습니다. 예외가 발생하면 호출 스택이 잘못 되었기 때문입니다. 델파이 시애틀에서는 맵을 생성하기 전에 리소스를 추가하려고하기 때문에 컴파일 할 수 없습니다. 컴파일 후 쓰레기통에 파일을 추가 할 수 있다는 것을 알고 있지만, 컴파일/빌드시에 그것을 할 수있는 방법이 있습니까? 미안하지만 내가별로 구체적이지 않다면, 여기가 나의 첫 번째 질문이다. 감사. 내가 어떤 대답을 읽은 후컴파일 할 때 프로젝트의 리소스로 .map 파일을 추가하는 방법은 무엇입니까?
UPDATE
, 나는 몇 가지 조사를했다. 이미 프로젝트에서 JEDI 예외 단위를 사용하고 있었지만 JEDI 디버그 전문가를 알지 못했습니다. 그것은 내가 원하는 것 이상을 정확하게 수행합니다. JEDI 디버그 전문가는 .map 파일을 .jdbg 파일로 변환합니다.이 파일은 암호화 된 파일 맵 파일입니다 (맵은 텍스트 파일 임). 또한, jdbg 파일은 약 12 % 작아졌습니다. 그 다음지도. 바이너리 (exe)에 jdbg를 삽입하는 옵션도 있습니다. > JCL 디버그 전문가 - -> .jdbg 생성 파일 ->이 프로젝트에 사용
프로젝트 -> JCL 디버그 전문가 -> 삽입 jdbg 데이터
프로젝트 :이를 위해, 나는 옵션을 사용할 수 바이너리로 -> JCL 디버그 전문가 - ->이 프로젝트
프로젝트를 위해 사용> 변환 후지도 파일을 삭제합니다 - (파일을 삭제하려면 물론,)>
예를 들어 젠킨스와 같이 IDE 외부에서이 도구를 사용하려면 JEDI \ jcl \ examples \ windows \ debug \ tools \ MakeJclDbg.dpr에있는 프로젝트를 빌드해야했습니다. 빌드가 끝나면 jcl의 bin 디렉토리에 exe 파일이 생성됩니다. 사용 방법 :
MakeJclDbg -J -E -M map_filename
J - .JDBG 파일을
E 만들기 - 삽입 디버그 데이터를 실행 파일
M에 - 변환
후 MAP 파일을 삭제실행 파일은 MAP 파일과 동일한 디렉토리에 있어야합니다. 이렇게하면 jdbg 파일 (맵 파일에 기반)이 생성되고 exe에 삽입되어 맵이 삭제됩니다. 이 (및 JEDI의 예외 단위로) 예외가 발생하면 스택 추적, 시스템에서 사용하는 모든 dll의 버전, 운영 체제 정보 등을 사용할 수 있으며이 모든 정보를 이메일.
나는 Embarcadero도 jdbg 파일을 bpl로 가지고 있다는 것을 깨달았습니다. 그래서 그들은 JCL 도구도 사용한다고 생각합니다.
@ Jerry : * 코드 * 란 무엇입니까? 질문은 ** 리소스 **를 실행 파일에 추가하는 것에 대해 묻습니다. 코드 관련이 없습니다. 이것은 실행 파일이 빌드 될 때 링커에 의해 생성 된 맵 파일입니다. –
@Jerry : 아니요. brcc 또는 MS rcc를 사용하여 명령 줄 또는 빌드 후 이벤트에서 추가 할 수도 있습니다. 그러나 IDE에게 코드를 요청하더라도 여전히 코드가 아닙니다. 컴파일러 지시문은 간단한'{$ R filename.ext}'입니다 –
@Rodrigo : JEDI는 실행 파일에 맵 파일을 임베딩 할 수있는 기능과 앱에서 직접 사용할 수있는 디버그 유닛을 사용할 수 있습니다 디스크에 압축을 풀지 않아도됩니다. 다른 디버깅 도구 (예 : MadExcept 및 Eureka)도 동일한 기능을 제공합니다. 자신의 롤을 시도하는 것보다는 그 중 하나를 사용하는 것이 훨씬 쉽습니다. –