Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > получить значения всех регистров |
Автор: slater 27.10.2010, 13:09 |
требуется в определенный момент времени программно получить значения всех регистров процессора(по принципу дебаггера т.е. как то по прерыванию) не знаю куда копать и что гуглить(все что нагуглил - ни к чему не привело) кто знает как это происходит - объясните пожалуйста как это работает? или хотя бы что гуглить? |
Автор: slater 27.10.2010, 13:33 |
т.е. вот например, gdb в какой то точке делает прерывание и получает значения регистров(во время отладки) каким образом он их получает и откуда? процессор выплевывает в оперативку видимо эти значения? а куда? откуда их считать? |
Автор: xvr 27.10.2010, 16:53 |
Через ptrace (PTRACE_PEEKUSR/PTRACE_GETREGS) |
Автор: slater 27.10.2010, 20:06 |
спасибо! ptrace? это системный вызов или утилитка? Добавлено через 3 минуты и 46 секунд покажите пример простенький, очень вас прошу. почитал - не пойму как воспользоваться |
Автор: xvr 27.10.2010, 20:59 |
Системный вызов Наберите в google 'ptrace how to use' - куча ссылок http://tldp.org/LDP/LGNET/issue81/sandeep.html http://pramode.net/articles/lfy/ptrace/pramode.html http://www.ece.virginia.edu/cheetah/links/helali/Ptrace.pdf |
Автор: slater 27.10.2010, 21:50 |
xvr, спасибо т.е. gdb юзает этот системный вызов?! других альтернатив нет ? |
Автор: xvr 28.10.2010, 07:08 |
Да Этот вызов сделан СПЕЦИАЛЬНО для отладчиков (и других средств отладки). Альтернативы может быть и есть (можно например /proc покапать. см man procfs), но они слабо изучены по причине ненужности - ptrace'а обычно хватает на все ![]() |
Автор: slater 28.10.2010, 09:08 |
xvr, спасибо |