2016-05-22 1 views
0

Я попытался подключиться к другим командам, таким как эхо, и он работает хорошо. Но когда дело доходит до подключения команды x, она терпит неудачу. Вот коды внутри моего файла .gdbinit.Как я могу подключиться к команде x в gdb?

set $pince_injection_failed = 1 
set $pince_debugging_mode = 0 
define hook-x 
    if $pince_injection_failed = 1 
    echo asdf 
end 

define hookpost-x 
    if $pince_debugging_mode = 0 
    echo zxcv 
end 

Я знаю, что gdb не принимает псевдонимы функции для подключения. Но x уже является полной функцией, не так ли? Я не мог найти никаких псевдонимов. Я также сомневаюсь в этом, потому что один символ слишком короткий, чтобы команда была

+1

'крючками x' и' hookpost-x' работа для меня в БГД 7.7.1. С какой версией вы столкнулись с этой проблемой? Это может быть ошибка в старых версиях, которые были исправлены. Также обратите внимание, что 'if $ pince_debugging_mode = 0' всегда будет false; вы, вероятно, хотите 'if $ pince_debugging_mode == 0'. Отсутствие оператора 'end' для прекращения' if' также может привести к тому, что команда не будет работать. –

+0

Моя версия 7.7.1. Я просто попытался выполнить 'define hook-x' в сеансе gdb вместо использования файла .gdbinit, и он работает! Что может быть неправильным с файлом .gdbinit? Edit: Ой, а также спасибо за заявление, если кончик Edit2: Я пытался написать минималистичный версию gdbinit так: 'определить Крюк-х эхо 1 end' И это также не работает – Desertricker

+1

Can вы добавляете команду 'echo' в качестве первой строки и последней строки вашего файла .gdbinit, чтобы проверить, читает ли ее gdb? –

ответ

0

Я нашел решение благодаря Mark Plotnick. Похоже, что у меня другая ошибка, я обнаружил, что существует функция, которая имеет неуправляемый конец, поэтому все функции появились после того, как gdb проигнорировала эту функцию.

define keks 
    set $lel=0 
    while($lel<10) 
    x/x 0x00400000 
    set $lel = $lel+1 
end 

Обратите внимание на отсутствие end в конце цикла, а