2017-12-31 50 views
1

에 배열 값의 일부를 인쇄하려면, 우리가 인쇄 할 수있는 데이터 [4]에 데이터 [14] 입력하여, 어떻게 GDB에서, C 언어, 우리가 알고있는 파스칼

print *(data+4)@11 

그렇다면, 질문은 우리가 GDB에서 디버깅시

var 
    data: array[0..100] of Integer; 

우리 파스칼 언어로 프로그래밍 할 때, 우리는 배열을 가질 수있다 , 어떻게 데이터 [4]에서 데이터 [14]로 값을 프린트 할 수 있습니까?

대단히 감사합니다.

+0

나는 한번도 시도한 적이 없지만 그게 다른 것이라고 생각하니? 동일한 구문을 사용할 수 있어야합니다. 너 뭐 해봤 니? –

+0

@RudyVelthuis @data [4]^@ 11하지만 실패했습니다. 나는 몇 시간 동안 고생했다. –

+0

하지만 ** ** 다른 구문입니다. 원래'* (data + 4) @ 11 '을 사용하면 어떻게됩니까? –

답변

0

gdb의 언어가 파스칼로 설정되어있을 때 이렇게 할 방법이 없습니다. 파스칼 식 구문 분석기에서이 확장을 구현 한 적이 없습니다.

한 가지 해결 방법은 배열 주소를 인쇄 한 다음 일시적으로 언어를 C 및 print *(type *)addr @ ...으로 전환하는 것입니다.

또 다른 해결 방법은 원하는 것을 수행하는 새로운 gdb 명령 (CLI 또는 Python 사용)을 작성하는 것입니다. 또는 파스칼 디버깅을 많이한다면 gdb에서이 확장을 구현할 수 있습니다. 어렵지 않습니다.

관련 문제