2009-11-17 3 views
4

У меня возникли проблемы с получением команды WinDbg .for.WinDbg .for loop

Я хотел бы сбросить массив C++-структур.

?? gpTranData->mpApplCodes[0] работает для одной записи, но я хотел бы пропустить их.

.for ($t0=0;$t0<(gpTranData->miApplCodeCount);$t0++){ ?? &gpTranData->mpApplCodes[$t0] } 

звук логично для меня, но я получаю

Numeric expression missing from '>miApplCodeCount);$t0++){ ?? &gpTranData->m_pApplCodes[$t0] }' 

Любые идеи?

Скотт

ответ

0

Я думаю, MASM оценщик не хватает некоторых данных на gpTranData->miApplCodeCount входе. Оберните свое выражение с помощью @@ C++() или @@().

+0

.for (г $ t0 = 0; @ $ t0 <@@ C++ (g_pTranData-> m_iApplCodeCount); @ $ t0 ++) {?? & g_pTranData-> m_pApplCodes [@ $ t0]} работает, но не выполняет итерацию $ t0 –

6

Вы не можете использовать операторы C++ для изменения псевдо-регистровых значений l в Windbg. Вместо этого вы можете использовать r $ t0 = @ $ t0 + 1. Это будет работать, как вы хотите:

.for (r $t0=0;@$t0<@@c++(g_pTranData->m_iApplCodeCount);r [email protected]$t0+1){ ?? &g_pTranData->m_pApplCodes[@$t0] }