Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > получить значения всех регистров


Автор: slater 27.10.2010, 13:09
требуется в определенный момент времени программно получить значения всех регистров процессора(по принципу дебаггера т.е. как то по прерыванию)
не знаю куда копать и что гуглить(все что нагуглил - ни к чему не привело)

кто знает как это происходит - объясните пожалуйста как это работает?

или хотя бы что гуглить?

Автор: slater 27.10.2010, 13:33
т.е. вот например, gdb в какой то точке делает прерывание и получает значения регистров(во время отладки)
каким образом он их получает и откуда? процессор выплевывает в оперативку видимо эти значения? а куда? откуда их считать?

Автор: xvr 27.10.2010, 16:53
Цитата(slater @  27.10.2010,  13:33 Найти цитируемый пост)
каким образом он их получает и откуда?
Через ptrace (PTRACE_PEEKUSR/PTRACE_GETREGS)

Автор: slater 27.10.2010, 20:06
спасибо!

ptrace? это системный вызов или утилитка?

Добавлено через 3 минуты и 46 секунд
покажите пример простенький, очень вас прошу.
почитал - не пойму как воспользоваться

Автор: xvr 27.10.2010, 20:59
Цитата(slater @  27.10.2010,  20:06 Найти цитируемый пост)
ptrace? это системный вызов или утилитка?
Системный вызов

Цитата(slater @  27.10.2010,  20:06 Найти цитируемый пост)
покажите пример простенький, очень вас прошу.

Наберите в 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
Цитата(slater @  27.10.2010,  21:50 Найти цитируемый пост)
т.е. gdb юзает этот системный вызов?!
Да
Цитата(slater @  27.10.2010,  21:50 Найти цитируемый пост)
других альтернатив нет ? 
Этот вызов сделан СПЕЦИАЛЬНО для отладчиков (и других средств отладки). Альтернативы может быть и есть (можно например /proc покапать. см man procfs), но они слабо изучены по причине ненужности - ptrace'а обычно хватает на все  smile 


Автор: slater 28.10.2010, 09:08
xvr, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)