2012-05-01 2 views
1

dbx를 사용하여 IBM AIX에서 디버깅 중이 었습니다. 나는보고 있었다 다음 : 아직도다음 어셈블리 실행 결과로 이어질 수있는 내용

(dbx) print *((int64*)0x00000001614aa050) 
-1 

-1 :

(dbx) print $r4 
0x00000001614aa050 
(dbx) print *((int64*)0x00000001614aa050) 
-1 
(dbx) print $r3 
0x0000000165e08468 
Then I "stepi" my 64bit program which executed the following instruction: 
std r3,0x0(r4) 

나는 즉시 그 메모리의 내용을 확인? $ r3의 콘텐츠가 메모리에 저장되어야합니다.

(dbx) print &bmc._pLong 
0x00000001614aa050 
(dbx) assign bmc._pLong=(int64 *)0x0000000165e08468 
(dbx) print *((int64*)0x00000001614aa050) 
6004180072 (which is 0x0000000165e08468) 

가 어떻게 그런 일이 일어날 수 : 그때 수동으로 변수를 사용하여 해당 주소로 값을 할당?

답변

0

필자는 여하튼 이것은 "파일럿"오류라고 가정합니다. 예 : 당신은 stepi를했고 표준 지시가 표시 되었습니까? 즉 그것이 실행하려고하는 지시입니다. 실행 된 지시가 아닙니다. 적어도 그것이 옳다고 생각합니다.

전 stepi를 전후로 수행하고 stepi의 작업을 이해하고 있는지 확인하십시오. 물론, iar 및 iar의 지침서를 인쇄하여 dbx가 귀하에게 접속하고 있지 않은지 확인하십시오.