Слишком большой выход cdb/windbg

Мы используем cdb (версия winDBG для командной строки), чтобы разрешить такси. Для получения выходных данных в файле мы используем вывод -logo, чтобы указать выходной файл. Для определенной кабины мы получаем "сбой преобразования CvRegToMachine(x86) для 0x7536" более миллиона раз.
По сути, мы получаем огромный журнал разрешенного кода, почти 1 ГБ, и все они заполнены приведенной выше строкой в ​​каждой строке.
Мы используем следующую команду cdb
cdb -z "abc.cab" -y "SymbolsPath" -G -logo "выходной файл" -lines -c ".kframes 100;! анализировать -v;! загрузить msec.dll;! эксплуатируемый -v;vertarget;lmv;q"
Кто-нибудь знает, что здесь может быть не так?

1 ответ

Решение

Вы cannot use -c and -G at the same time -c нужен первый перерыв, чтобы прочитать начальный
командуйте и действуйте, если вам нужно запустить код, используйте g; в конце команды -c

также много раз -c commands need to be provided first и нуждающемуся
быть в конце командной строки

cdb -c "<some cmd;someother cmd;g>" -z foo.cab

.load не !load следует использовать для загрузки сторонних расширений

испущенная строка "CvReg.........." кажется, связано с либо SYMFLAG_NULL или же SYMFLAG_REGISTER в Flags member of SYMBOLINFO Struct,

пробная версия не пересекала этот путь к коду на моей машине, поэтому может потребоваться либо поврежденный dmp, либо дополнительная информация о файле dmp, чтобы найти причину выброса

создание дампа

C:\>dir /b *.cab
File Not Found

C:\>cdb -c ".dump /ma /b foo.cab;q" calc | grep -i -E "dmp|dump|wr"
0:000> cdb: Reading initial command '.dump /ma /b foo.cab;q'
Creating C:\DOCUME~1\Admin\LOCALS~1\Temp\foo.cab.dmp - mini user dump
Dump successfully written
  Adding C:\DOCUME~1\Admin\LOCALS~1\Temp\foo.cab.dmp - added
Wrote foo.cab

C:\>dir /b *.cab
foo.cab

** загрузка дампа как отладчика (cdb) (foo.cab) и осмотр **

C:\>cdb cdb -z foo.cab

    0:000> s -u dbgeng l?39b000  "CvReg"
020341f8  0043 0076 0052 0065 0067 0054 006f 004d  C.v.R.e.g.T.o.M.

0:000> # *(*20341f8 dbgeng l?39b000
dbgeng!MachineInfo::CvRegToMachine+0xfe:
021bf8ae 68f8410302      push    offset dbgeng!`string' (020341f8)

0:000> # call*dbgeng!MachineInfo::CvRegToMachine dbgeng l?39b000
dbgeng!ImageInfo::CvRegToMachine+0x22:
021b62f2 e8b9940000      call    dbgeng!MachineInfo::CvRegToMachine (021bf7b0)

0:000> # call*CvRegToMachine dbgeng l?39b000
dbgeng!ImageInfo::CvRegToMachine+0x22:
021b62f2 e8b9940000      call    dbgeng!MachineInfo::CvRegToMachine (021bf7b0)
dbgeng!TypeInfoValueFromSymInfo+0x4b:
022541ab e82021f6ff      call    dbgeng!ImageInfo::CvRegToMachine (021b62d0)
dbgeng!TypedData::SetToSymbol+0x25f:
02285edf e8ec03f3ff      call    dbgeng!ImageInfo::CvRegToMachine (021b62d0)
dbgeng!TypedData::SetToSymbol+0x2da:
02285f5a e87103f3ff      call    dbgeng!ImageInfo::CvRegToMachine (021b62d0)
0:000> ln 0x21bf8ae


(021bf7b0)   dbgeng!MachineInfo::CvRegToMachine+0xfe   |  (021bf8d0)   dbgeng!Ma
chineInfo::GetContextState

делать и уф на этой функции дает проверку, где SymbolInfo->Flags
проверил и решил, что мой образец дампа выше не входит в путь

Другие вопросы по тегам