Как перенаправить команду windbg в файл, не отображая вывод на консоль windbg?

.logopen это не ответ, потому что он позволяет выводить команду на консоль windbg.

Например, !sosex.dumpgen 2 производит чертовски много выходных данных, которые я не хочу видеть в консоли отладчика. Прямо сейчас я использую следующее:

.shell -i- -ci "!dumpgen 2" cmd /c more > D:\tmp\dumpgen2.log

Моя проблема в том, что more Команда является интерактивной и требует ввода данных пользователем после вывода определенного количества данных. Это огромная проблема для меня.

Одним из решений может быть запуск самого отладчика не в интерактивном режиме со скриптом и использование там команды.logopen.

Интересно, смогу ли я достичь того, чего хочу, пока:

  1. Делаем это из интерактивного сеанса WinDbg
  2. Использование простых стандартных команд оболочки (которые также могут быть cmd.exe или powershell.exe). Я знаю, что написание небольшой утилиты, которая просто перенаправляет stdin на stdout, - тривиальная часть работы, но все же я предпочитаю не делать этого.

2 ответа

Решение
.shell -i- -ci "!dumpgen 2" findstr "^" >D:\tmp\dumpgen2.log

^ найдет начало любой строки, поэтому это должна быть копия 1:1.

Вы также можете использовать кошку gnuwin32

C:\>dir /b foogg.txt   
File Not Found

C:>cdb -c ".shell -ci \"lm\" -o \"c:\\foogg.txt\" cat -" calc.exe

0:000> cdb: Reading initial command '.shell -ci "lm" -o "c:\\\\foogg.txt" cat -'

<.shell waiting 10 second(s) for process>
.shell: Process exited
0:000> q
quit:

проверьте, существует ли файл и распечатайте содержимое

C:\>dir /b foogg.txt
foogg.txt

C:\>cat foogg.txt

start    end        module name
01000000 0101f000   calc       (deferred)
77c10000 77c68000   msvcrt     (deferred)
77dd0000 77e6b000   ADVAPI32   (deferred)
77e70000 77f02000   RPCRT4     (deferred)
77f10000 77f59000   GDI32      (deferred)
77f60000 77fd6000   SHLWAPI    (deferred)
77fe0000 77ff1000   Secur32    (deferred)
7c800000 7c8f6000   kernel32   (deferred)
7c900000 7c9b2000   ntdll      (pdb symbols)
7c9c0000 7d1d7000   SHELL32    (deferred)
7e410000 7e4a1000   USER32     (deferred)
Другие вопросы по тегам