2015-03-07 3 views
1

Я использую GDB с сборкой Microblaze под управлением OVPsim. У меня следующая проблема:Как я могу заставить GDB продвигаться в нужное место?

(gdb) advance PTE_entry_empty 
0x00000598 in PTE_entry_empty() 
1: x/i $pc 
=> 0x598 <PTE_entry_empty+36>: mfs r6, rear 

т.е., хотя я прошу GDB, чтобы перейти к конкретному символу она выходит далеко за его пределы - и даже, кажется, знаю, что прошло хорошо за ней.. Полагаю, я мог бы попросить его перейти к определенному адресу (в данном случае 0x574), но есть ли более общее решение?

ответ

2

Аргумент команды advancebreak) - это либо имя функции, номер строки, метка, либо *, за которым следует адресное выражение.

Задание имени функции приведет к остановке gdb после пролога функции. Если вы хотите остановиться в точном начальном адресе функции PTE_entry_empty, вы можете сделать

(gdb) advance *PTE_entry_empty 

Использование * может показаться нелогичным, так как нет косвенности участия. Просто подумайте, что это ключевое слово.