2017-02-22 2 views
4

Короче говоря, я хочу, чтобы создать контрольную точку, которая будет сохранять часть памяти в файл и продолжить, что-то вроде этого:

bp mymodule!MyReader::issueRead+0x2e ".writemem C:\writemem\write_$t1 rdx L r8; g" 

$ t1 - счетчик, увеличенный в другой точке останова. Проблема в том, что $ t1 (или $ {$ t1} не разрешен в имени файла, и я заканчиваю файл с именем «write_ $ t1»

ответ

4

Сценарий WinDbg всегда немного взломан. Я не применить его к контрольной точке еще:

aS /c filename .printf "c:\\writemem\\write_%i", $t1; .block {.writemem ${filename} 00ba0000 L1}; ad filename 

Когда вы примените его к контрольной точке вы, вероятно, придется снова бежать кавычки

aS определяет псевдоним, /c делает это, используя. В этом случае я форматирую строку, используя .printf. Затем определяется переменная filename.

WinDbg немедленно расширяет псевдонимы, то есть делает это в то время, когда filename еще не определен. Поэтому я использую .block для создания новой области.

И наконец, ad снова удаляет псевдоним.

Смежные вопросы