gdb의 주어진 주소에서 어셈블리 명령을 중단하는 방법은 무엇입니까?


97
0x0000000000400448 <main+0>:    push   %rbp
0x0000000000400449 <main+1>:    mov    %rsp,%rbp
0x000000000040044c <main+4>:    mov    $0x6,%eax
0x0000000000400451 <main+9>:    leaveq 
0x0000000000400452 <main+10>:   retq   

나는 시도했다 :

breaki 0x0000000000400448

그러나 그런 명령이없는 것 같습니다.

gdb에 그러한 기능이 있습니까?


3
breaki? 오타입니까?
phil294

2
@Blauhirn 아마도 명령 수준에서 한 단계 씩 수행하는 데 사용되는 stepiand 와의 유사점 일 것 nexti입니다.
Per Lundberg

답변:


149

시험 break *0x0000000000400448


15
주소를 지정하려면 *가 필요하기 때문일 수 있습니다. sourceware.org/gdb/current/onlinedocs/gdb/…
Laurent G

4
물론 앞의 0을 제거하고 약어 break를 줄 수 b *0x400448있습니다.
user202729

기능 또는 명명 된 데이터를 명확하게하기 위해 0x0000000000400448(즉, 같은 특이한 것은이 될 것입니다!)
댄 앤더슨

1
@ compile-fan break * address 주소 주소에 중단 점을 설정합니다. 이를 사용하여 디버깅 정보 나 소스 파일이없는 프로그램 부분에 중단 점을 설정할 수 있습니다. ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_28.html 저는 어셈블리 코드를 디버깅하고 있었고 여러분이 요청한 동일한 질문에 대해 여기에 도달했습니다.
P4cK3tHuNt3R

64

또 다른 방법:

break *main+4

이것은 0x000000000040044c
전체 주소를 쓰는 것보다 더 쉽다고 생각할 때 중단 점을 추가합니다 !

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.