Roswin.gdb

Материал из Русский WINE
Перейти к: навигация, поиск
define log_to_file
      set logging file $arg0
      set logging redirect on
      set logging overwrite on
      set logging on
end

define end_log
      set logging off
end

define load-module-nostrip
      set $modname = $arg0
      set $modaddr = $arg1
      printf "Loading module symbols at 0x%x\n", $modaddr
      set $i = 0
      while (((char *)$modname)[$i] != '.' && ((char *)$modname)[$i] != 0)
           set $i = $i + 1
      end
      if (((char *)$modname)[$i] == '.')
           set ((char *)$modname)[$i] = 0
      end
      log_to_file findsym.cmd
          printf "for /f \"usebackq\" %%%%i in (`dir /s /b d:\\reactos\\output-i386\\%s.nostrip.*`) do (\nset x=\"%%%%i\"\nset y=!x:\\=/!\necho add-symbol-file !y! 0x%x\n) >> findsym.gdb\n", $modname, $modaddr
      end_log
      shell cmd /e:on /v:on /c .\findsym.cmd
end

define copy-module-name
      set $ndx     = 0
      while (((LDR_DATA_TABLE_ENTRY*)$modinf)->BaseDllName.Buffer[$ndx])
              set ((char *)$name)[$ndx] = ((LDR_DATA_TABLE_ENTRY*)$modinf)->BaseDllName.Buffer[$ndx]
              set $ndx = $ndx + 1
      end
      set ((char *)$name)[$ndx] = 0
end

define load-all-modules
      set $stack_space = $esp - 1024
      set $name    = $stack_space

      set $modinf = PsLoadedModuleList->Flink
      set $modinf = ((PLIST_ENTRY)$modinf)->Flink

      shell del /q findsym.gdb

      while ($modinf != &PsLoadedModuleList)
              copy-module-name
              printf "Loading symbols for %s\n", ((char *)$name)
              load-module-nostrip $name (((PLDR_DATA_TABLE_ENTRY)$modinf)->DllBase+0x1000)
              set $modinf = ((PLIST_ENTRY)$modinf)->Flink
      end
      source findsym.gdb
end

define print-modules
      set $stack_space = $esp - 1024
      set $name    = $stack_space

      set $modinf = PsLoadedModuleList->Flink

      while ($modinf != &PsLoadedModuleList)
              copy-module-name
              printf "%s \t(%08x)\n", ((char *)$name), (((PLDR_DATA_TABLE_ENTRY)$modinf)->DllBase+0x1000)
              set $modinf = ((PLIST_ENTRY)$modinf)->Flink
      end
end
ReactOS
Search.png
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQ
Обзоры ОболочкаNTVDMWOWCommunity Edition