Программный мониторинг изменений переменныхPython

Программы на Python
Ответить
Anonymous
 Программный мониторинг изменений переменных

Сообщение Anonymous »

Это продолжение моего предыдущего вопроса о создании отладчика для исходных файлов C в Python. Текущая проблема, с которой я сталкиваюсь, — это мониторинг изменений переменных. Я хочу отслеживать 8 переменных, например B, B0...

Код: Выделить всё

B7. Мой подход заключается в опросе каждую секунду при вызове ReadProcessMemory
. Это кажется неэффективным, но работает для программ с более длительным временем выполнения. Я хочу, чтобы он работал с исходным кодом, например:

Код: Выделить всё

for (int i = 0; i < 10; i++) {
B = i;
printf("B = %d\n", B);
}
Я провел исследование и обнаружил:
  • Аппаратные точки останова. Их не очень легко реализовать, и на данный момент я обнаружил, что они работают не с адресами переменных, а с «строчными» адресами. Кроме того, их можно использовать максимум для 4 регистров отладки.
  • Программные точки останова. Это также работает с «линейными» адресами, но не для переменных адресов и мониторинга.
  • Защитники страниц. Использование VirtualProtectEx в моем случае не помогает, поскольку оно отслеживает всю страницу, а не только выбирает адреса. Таким образом, это срабатывает на адресах, которые меня не интересуют. Фильтрация их путем сопоставления их адресов с адресами в списке не работает. Это также медленно и неэффективно.
  • Мне нужна помощь, чтобы понять, подходит ли этот ответ, включающий WaitOnAddress или WaitForSingleObject, для моего варианта использования.
К вашему сведению, этот отладчик будет предназначен для 32-разрядных программ.

Подробнее здесь: https://stackoverflow.com/questions/798 ... mmatically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»