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