Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Не получается транслировать символы в SoftICE Symbol Loader  (Прочитано 14609 раз)
0 Пользователей и 1 Гость смотрят эту тему.
bob
Гость
« : 18-06-2008 15:33 » 

MS Visual Studio 2008, есть скомпилированный с отладочной информацией модуль драйвера. У меня не получается транслировать отладочную информацию из модуля драйвера.
Делаю как написано в руководстве к SoftICE:

File->Open, Module->Load

пишет

----- Loading symbols for 'C:\numega\driver\driver\sys\objchk\i386\driver.sys' -----
C:\numega\driver\driver\sys\objchk\i386\driver.sys opened successfully
Translating file: C:\numega\driver\driver\sys\objchk\i386\driver.sys...
Error: No debug information found.
----- 'C:\numega\driver\driver\sys\objchk\i386\driver.sys' symbols not loaded -----


Попоробовал на exe - модуле, то же не получилось, пишет -
Translating file: C:\...\Test_driver.exe...
Error: No debug information found.

Подскажите пож. что я делаю нет так?
Записан
bob
Гость
« Ответ #1 : 18-06-2008 18:13 » 

Да, забыл, SoftICE 2.5, Windows XP SP3.
Сейчас искал ответ в yandex'е. Интересно, но точно по такой же проблеме задают вопрос многие, но почему - то тема беседы сразу же отклюняется в сторону других проблем, связанных с SoftICE. Нигде так и ненашел ответа.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 19-06-2008 07:18 » 

bob, опции компилятора-линкера стоят некорректно: не тот формат pdb выставлен, причин масса.

а вообще неплохо бы прочитать мануал к софтайсу... оказывается есть такой!
где написано: с какими свичами надо компилировать драйвер для получения отладочной информации.
и даже раздел этого мануала называется: "Building Applications with Debug Information"
Цитата
.....
Microsoft Visual C++ 2.x, 4.x, 5.0, and 6.0
To generate Program Database (PDB) debug information:

Compile with Program Database debug information, using the command-line option /Zi.

Use Microsoft's linker to link with /DEBUG /DEBUGTYPE:CV.

Note:  VxDs require you to generate PDB debug information.

 

To generate Codeview debug information:

Compile with C7-compatible debug information, using the command-line option /Z7.

Use Microsoft's linker to link with /DEBUG /DEBUGTYPE:CV /PDB:NONE.

Note:  If you are using the standard Windows NT DDK make procedure, use the following environment variables: NTDEBUG=ntsd and NTDEBUGTYPE=windbg.
.....
а вот если мануал не помогает... тогда выкладывайте все настройки проекта - будем смотреть.

PS кстати, а чего SoftICE старый то такой?

Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
bob
Гость
« Ответ #3 : 19-06-2008 13:13 » 

Да, действительно, мануал есть, я его читал. Открываю "Using SoftICE.pdf",
читаю раздел "Building Applications with Debug Information":
*************************************
Microsoft Visual C++ 2.x, 4.0,
4.1, 4.2, and 5.0
To generate Program Database (PDB) debug information:
• Compile with Program Database debug information, using the command-
line option /Zi
• Use Microsoft’s linker to link with
/DEBUG /DEBUGTYPE:CV
*************************************
В MS VS 2008

на вкладке компилятора, в секции General, проверяю, что:
Debug Information format - Program DataBase (/Zi) ;

на вкладке линкера, в секции Debugging:
Generate Debugging Info - Yes (/DEBUG) ;

на вкладке линкера, в секции Command line, Additional options:
присутствует /DEBUGTYPE:CV ;

Ключи компилятора:
/Oi /I "C:\Program Files\NTDDK\inc" /I "C:\Program Files\NuMega\DriverStudio\DriverWorks\include" /I "\..\common\include\stl" /I "\source" /D "WIN32=100" /D "RDRDBG"
/D "SRVDBG" /D "STD_CALL" /D "CONDITION_HANDLING=1" /D "NT_UP=1" /D "NT_INST=0" /D "_NT1X_=100" /D "WINNT=1"
/D "_WIN32_WINNT=0x0400" /D "WIN32_LEAN_AND_MEAN=1" /D "DBG=1" /D "DEVL=1" /D "FPO=0" /D "NDEBUG" /D "_DLL=1"
/D "_X86_=1" /D "NTVERSION='WDM'" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /GF /FD /EHsc /MTd /Gy /Fp".\Checked/driver.pch"
/Fo".\Checked/" /Fd".\Checked/" /FR".\Checked\\" /W3 /nologo /c /Zi /Gz /TP /errorReport:prompt

Ключи линкера:
/VERBOSE:LIB /OUT:"C:\numega\driver\driver\sys\objchk\i386\driver.sys" /VERSION:5.0 /INCREMENTAL:NO /LIBPATH:"C:\Program Files\NTDDK\libchk\i386" /DLL /MANIFEST:NO /DEBUG /PDB:"C:\numega\driver\driver\sys\objchk\i386\driver.pdb"
/MAP:"C:\numega\driver\driver\sys\objchk\i386
\driver.map" /STACK:262144,4096 /OPT:REF /ENTRY:"DriverEntry" /RELEASE /BASE:"0x10000" /MERGE:".rdata=.text"
/MACHINE:X86 /DEBUGTYPE:CV /DRIVER:WDM /IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096,4210
/SECTION:INIT,d  /FULLBUILD /FORCE:MULTIPLE /OPT:REF    /osversion:5.00  /FULLBUILD /FORCE:MULTIPLE /OPT:REF
/osversion:5.00  /subsystem:native,1.10  /FORCE:MULTIPLE /OPT:REF    /osversion:5.00
/subsystem:native,1.10 ntoskrnl.lib wdm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

строю проект - driver - 0 error(s), 0 warning(s).

Загружаю построенный модуль driver.sys - в Symbol Loader:
=========================
C:\numega\driver\driver\sys\objchk\i386\driver.sys opened successfully

Нажимаю Translate:
Translating C:\numega\driver\driver\sys\objchk\i386\driver.sys. . .
Error: No debug information found

Пытаюсь конвертировать символы с помощью nmsym.exe:
$>nmsym driver.sys /OUTPUT:driver.nms ->
Error translating driver.sys: No debug information found

$>nmsym /TRANSLATE:SOURCE,NOPACKAGE driver.sys /OUTPUT:driver.nms ->
Error translating driver.sys: No debug information found
« Последнее редактирование: 19-06-2008 13:17 от bob » Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 19-06-2008 14:46 » 

компилятор: свич /TP убить насмерть))))
точнее - заменить на /TC.
у вас же С код, без ++! удивительно как у вас проект компилится...
все остальное вроде нормально...
PS и лишнее можно почистить...
"RDRDBG" "SRVDBG" - даже не знаю что за звери...
ну зачем линкеру апишные либы на входе?
/RELEASE тоже смысла в дебаговой версии не имеет...

PPS /Fp".\Checked/driver.pch" - это то зачем? такой проект большой? только морока с ним...
« Последнее редактирование: 19-06-2008 14:57 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
bob
Гость
« Ответ #5 : 19-06-2008 19:28 » 

VC++ IDE некоторые опции компилятора и линкера вообще не дает выбирать/изменять.
Ладно, делаем по другому - складываем командную строчку для компилятора и линкера в .bat.
Выглядит все это дела так:
cl.exe -c "C:\numega\driver\driver\sys\Driver.c" /TC /Gz /I "C:\Program Files\NTDDK\inc" /I "C:\Program Files\NuMega\DriverStudio\DriverWorks\include"
/I "C:\Program Files\Microsoft Visual Studio 9.0\VC\include" /D "_X86_=1" /Zi /Fo"C:\numega\driver\driver\sys\objchk\i386\driver.obj" /Fd"C:\numega\driver\driver\sys\objchk\i386\driver.pdb"

link.exe "C:\numega\driver\driver\sys\objchk\i386\driver.obj" /DEBUG /DEBUGTYPE:CV /ENTRY:"DriverEntry"
/SUBSYSTEM:EFI_RUNTIME_DRIVER /OUT:"C:\numega\driver\driver\sys\objchk\i386\driver.sys" /LIBPATH:"C:\Program Files\NTDDK\libchk\i386" /LIBPATH:"C:\Program Files\NTDDK\lib\win_me" /NODEFAULTLIB:"OLDNAMES.lib" wdm.lib ntoskrnl.lib

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

В условленном месте получаем три файла: driver.obj, driver.pdb, driver.sys.
В исходнике драйвера собственно ничего кроме DriverEntry, DriverUnload и DispatchCreateClose.
Получаются размеры - driver.obj - 11,5Кб, driver.pdb - 127Кб, driver.sys - 3Кб.

Открываем driver.sys в Symbol Loader, кнопка Translate -
Error: No debug information found

Тоже самое и с nmsym.exe
Что еще может быть причиной невозможности транслировать PDB в NMS?

Может быть такое, что просто SoftIce не понимает формат PDB, который генерируют инструменты из VS2008?
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 20-06-2008 09:25 » 

да почему /SUBSYSTEM:EFI_RUNTIME_DRIVER !?)
кроме того дефенишены типа DEBUG нужны...

pdb... теоретически я на 2008 не проверял. на 2005 работает.

лан, попробуй мои настройки в батник положить...
компилятор:
/Oi /I "C:\DDK\XP2600.1106\inc\wxp" /I "C:\DDK\XP2600.1106\inc\ddk\wxp" /I "C:\DDK\XP2600.1106\inc\crt" /D "DBG=1" /D "_DEBUG" /D "_WINDOWS_" /D "WIN32" /D "_X86_=1" /D "i386=1" /D "STD_CALL" /D "CONDITION_HANDLING=1" /D "NT_UP=1" /D "NT_INST=0" /D "WIN32=100" /D "_NT1X_=100" /D "WINNT=1" /D "_WIN32_WINNT=0x0400" /D "_WIN32_IE=0x0400" /D "WIN32_LEAN_AND_MEAN=1" /D "DEVL=1" /D "FPO=0" /D "_DLL=1" /D "DRIVER" /D "_XP2600_SYS_DRIVER_" /D "_WIN2K_COMPAT_SLIST_USAGE" /X /GF /FD /EHsc /MTd /Zp8 /GS- /FAs /Fa".\Debug_WinXP2600/" /Fo".\Debug_WinXP2600/" /Fd".\Debug_WinXP2600/" /FR".\Debug_WinXP2600\\" /W3 /nologo /c /Zi /Gz /TC /errorReport:prompt /Zel /QIfdiv- /QIf /QI0f -cbstring


линкер
/OUT:"Debug_WINXP2600\driver.sys" /VERSION:2.2 /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\DDK\XP2600.1106\lib\wxp\i386" /MANIFEST:NO /NODEFAULTLIB /DEBUG /PDB:".\Debug_WinXP2600/driver.pdb" /MAP:".\Debug_WinXP2600/driver.map" /SUBSYSTEM:NATIVE /STACK:262144,4096 /DRIVER /OPT:REF /OPT:ICF /ENTRY:"DriverEntry@8" /BASE:"0x10000" /MERGE:".rdata=.text" /ERRORREPORT:PROMPT ntoskrnl.lib hal.lib wmilib.lib /safeseh:no

если с ними не заработает... или выложи проект с драйвером... попробую у себя откомпилить.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
bob
Гость
« Ответ #7 : 21-06-2008 17:08 » 

Ну вот, те же ключики, примененные к моим папкам:
Код:
cl.exe "C:\numega\driver\driver\sys\Driver.c" /I "C:\Program Files\NTDDK\inc" /I "C:\Program 
Files\NuMega\DriverStudio\DriverWorks\include" /I "C:\Program Files\Microsoft Visual Studio
9.0\VC\include" /D "DBG=1" /D "_DEBUG" /D "_WINDOWS_" /D "WIN32" /D "_X86_=1" /D "i386=1" /D
"STD_CALL" /D "CONDITION_HANDLING=1" /D "NT_UP=1" /D "NT_INST=0" /D "WIN32=100" /D
"_NT1X_=100" /D "WINNT=1" /D "_WIN32_WINNT=0x0400" /D "_WIN32_IE=0x0400" /D
"WIN32_LEAN_AND_MEAN=1" /D "DEVL=1" /D "FPO=0" /D "_DLL=1" /D "DRIVER" /D
"_XP2600_SYS_DRIVER_" /D "_WIN2K_COMPAT_SLIST_USAGE" /X /GF /FD /EHsc /MTd /Zp8 /GS- /FAs
/Fa"C:\numega\driver\driver\sys\objchk\i386\driver.asm" /D "_X86_=1"
/Fo"C:\numega\driver\driver\sys\objchk\i386\driver.obj"
/Fd"C:\numega\driver\driver\sys\objchk\i386\driver.pdb"  
/FR"C:\numega\driver\driver\sys\objchk\i386\driver.sbr" /W3 /nologo /c /Zi /Gz /TC
/errorReport:prompt /Zel /QIfdiv- /QIf /QI0f -cbstring
Код:
link.exe "C:\numega\driver\driver\sys\objchk\i386\driver.obj" 
/OUT:"C:\numega\driver\driver\sys\objchk\i386\driver.sys" /VERSION:2.2 /INCREMENTAL:NO
/NOLOGO /LIBPATH:"C:\Program Files\NTDDK\libchk\i386" /LIBPATH:"C:\Program
Files\NTDDK\lib\win_me" /MANIFEST:NO /NODEFAULTLIB /DEBUG
/PDB:"C:\numega\driver\driver\sys\objchk\i386\driver.pdb"
/MAP:"C:\numega\driver\driver\sys\objchk\i386\driver.map" /SUBSYSTEM:NATIVE
/STACK:262144,4096 /DRIVER /OPT:REF /OPT:ICF /ENTRY:"DriverEntry@8" /BASE:"0x10000"
/MERGE:".rdata=.text" /ERRORREPORT:PROMPT ntoskrnl.lib hal.lib wmilib.lib /safeseh:no

Вроде бы все ключи один в один как и в твоем посте.
Вот описания /QIfdiv- /QIf /QI0f линкер шипит что все они deprecated, если ты говоришь что с этими
ключами все работает - бог с ними - потом.

Результат тот же -
=========================
C:\numega\driver\driver\sys\objchk\i386\driver.sys opened successfully
Translating C:\numega\driver\driver\sys\objchk\i386\driver.sys. . .
Error: No debug information found

Насчет того чтобы выложить проект - ну а какой проект, я уже с этими заморочками про проект
забыл. Есть только файл - Driver.c его могу в пост вставить.

Вот что то мне кажется, что мы все ближе подходим к тому, что бы мне заменить VStudio 2008
на VC++2005 и те компилятор с линкером попробовать. Не знаю различаются ли они.

PS. Да вот еще у меня либы и wdm.h из DDK2000. Не знаю имеет ли это значение  в данной ситуации.
Записан
bob
Гость
« Ответ #8 : 21-06-2008 17:11 » 

Driver.c
Код:
#include <wdm.h>
NTSTATUS DispatchCreateClose(PDEVICE_OBJECT  pDeviceObject, PIRP  pIrp);
VOID DriverUnload( IN PDRIVER_OBJECT  DriverObject );
NTSTATUS AddDevice( IN PDRIVER_OBJECT  DriverObject, IN PDEVICE_OBJECT  PhysicalDeviceObject);
NTSTATUS DispatchPnP( IN PDEVICE_OBJECT  DeviceObject, IN PIRP  Irp );
NTSTATUS DispatchPower( IN PDEVICE_OBJECT  DeviceObject, IN PIRP  Irp);
UNICODE_STRING g_usDeviceName;
UNICODE_STRING g_usSymbolicLink;
NTSTATUS DriverEntry( PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pusRegistryPath)
{
NTSTATUS nsStatus;
PDEVICE_OBJECT pdo;
RtlInitUnicodeString( &g_usDeviceName, L"\\Device\\devMyDevice" );
RtlInitUnicodeString( &g_usSymbolicLink, L"\\??\\slMyDevice" );
nsStatus = IoCreateDevice( pDriverObject,
0,
&g_usDeviceName,
FILE_DEVICE_UNKNOWN,
0,
FALSE,
&pdo );
if( nsStatus == STATUS_SUCCESS )
{
nsStatus = IoCreateSymbolicLink( &g_usSymbolicLink, &g_usDeviceName );
if( nsStatus == STATUS_SUCCESS )
{
pDriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreateClose;
pDriverObject->MajorFunction[IRP_MJ_CLOSE]  = DispatchCreateClose;
pDriverObject->DriverUnload = DriverUnload;
}
else
{
IoDeleteDevice( pdo );
}
}
return( STATUS_SUCCESS );
//return( STATUS_DEVICE_CONFIGURATION_ERROR );
}
NTSTATUS DispatchCreateClose(PDEVICE_OBJECT  pDeviceObject, PIRP  pIrp)
{
pIrp->IoStatus.Status = STATUS_SUCCESS;
pIrp->IoStatus.Information = 0;
IoCompleteRequest(pIrp, IO_NO_INCREMENT);
return( STATUS_SUCCESS );
}
VOID DriverUnload( IN PDRIVER_OBJECT  DriverObject )
{
IoDeleteSymbolicLink( &g_usSymbolicLink );
IoDeleteDevice( DriverObject->DeviceObject );
return;
}
NTSTATUS AddDevice( IN PDRIVER_OBJECT  DriverObject, IN PDEVICE_OBJECT  PhysicalDeviceObject)
{
return( STATUS_SUCCESS );
}
NTSTATUS DispatchPnP( IN PDEVICE_OBJECT  DeviceObject, IN PIRP  Irp )
{
return( STATUS_SUCCESS );
}
NTSTATUS DispatchPower( IN PDEVICE_OBJECT  DeviceObject, IN PIRP  Irp)
{
return( STATUS_SUCCESS );
}
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 23-06-2008 08:18 » 

позвольте... какие еще wdm.h? - вобще то... у меня такой файл для компиляции под Windows 98 стоит)))))))
в 2000 и XP (а так же висте) подклчюается файл: <ntddk.h>!!!!!!!

wdm.h - НЕ НУЖЕН!

DDK какой стоит? зачем вы либы от windows ME подключаете?
не уверен что DDK 2000 подойдет для XP.. к сожалению не помню уже, но помоему для XP надо было перекомпилировать с новым DDK.

Далее. пути для инклудов и либ - не совсем верные..  тут подменил. все компилируется и работает.

Далее. при установке DDK у вас в меню пуск должны были батники появится типа:
ПУск->Development Kits->DDK 3790.1830->Build Environments->Windows XP ->Cheked build env
вызовете эту самую командную строку и в ней попробуйте скомпилировать. (тем самым вы используете еомплиятор и линкер от DDK - который на 100% подходит)

далее - что запускать, в точности такой "батничек" можно можно сделать(только изменить путь к DDK ):
Код:

cl.exe "Driver.c" /I"C:\DDK\DDK3790.1830\inc\crt" /I"C:\DDK\DDK3790.1830\inc\ddk\wxp" /I"C:\DDK\DDK3790.1830\inc\wxp" /D "DBG=1" /D "_DEBUG" /D "_WINDOWS_" /D "WIN32" /D "_X86_=1" /D "i386=1" /D "STD_CALL" /D "CONDITION_HANDLING=1" /D "NT_UP=1" /D "NT_INST=0" /D "WIN32=100" /D "_NT1X_=100" /D "WINNT=1" /D "_WIN32_WINNT=0x0400" /D "_WIN32_IE=0x0400" /D "WIN32_LEAN_AND_MEAN=1" /D "DEVL=1" /D "FPO=0" /D "_DLL=1" /D "DRIVER" /D "_XP2600_SYS_DRIVER_" /D "_WIN2K_COMPAT_SLIST_USAGE" /X /GF /FD /EHsc /MTd /Zp8 /GS- /FAs /Fa"driver.asm" /D "_X86_=1" /Fo"driver.obj" /Fd"driver.pdb"  /FR"driver.sbr" /W3 /nologo /c /Zi /Gz /TC /errorReport:prompt /Zel /QIfdiv- /QIf /QI0f -cbstring


link.exe "driver.obj" /OUT:"driver.sys" /VERSION:2.2 /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\DDK\DDK3790.1830\lib\wxp\i386" /MANIFEST:NO /NODEFAULTLIB /DEBUG /PDB:"driver.pdb" /MAP:"driver.map" /SUBSYSTEM:NATIVE /STACK:262144,4096 /DRIVER /OPT:REF /OPT:ICF /ENTRY:"DriverEntry@8" /BASE:"0x10000" /MERGE:".rdata=.text" /ERRORREPORT:PROMPT ntoskrnl.lib hal.lib wmilib.lib /safeseh:no

ничего лишенго не надо добавлять!

мой
DDK 3790.1830
в нем: компилятор MS v 13.10.4035 и линкер MS     v  7.10.4035
SoftIce 3.1.0

результат:
----- Loading symbols for 'C:\qqq\driver.sys'-----
C:\qqq\driver.sys opened successfully
Translating file: C:\qqq\driver.sys...
Translated C:\qqq\driver.sys successfully.
Loading symbols for C:\qqq\driver.nms...
Error: SoftICE is not loaded.
----- 'C:\qqq\driver.sys' symbols not loaded -----


PS эээ... вообще про XP речь идет? или про Win98?
« Последнее редактирование: 23-06-2008 08:25 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
sanjaaaa
Гость
« Ответ #10 : 23-06-2008 15:42 » 

       Тоже очень интересно. Я DDK2600.1106 и SoftIce4.05 так и не подружил. В инете находил, что MS меняет формат .pdb от версии к версии. А вообще SoftIce вроде уже не поддерживается. Windbg отличный отладчик и конвертировать символы не надо и устанавливается без проблем.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 24-06-2008 07:37 » new

sanjaaaa, все так)
насчет подружить - для SofIce надо было библиотечки обновлять... на их сайте раньше выкладывали. не помню какой у меня стоял - кажется из набора DS 3.1. а до этого может и другой.. но все нормально было. руский шрифт только не поддерживался) всегда пользовался DDK-вским компилятором..

а что до Windbg - дело вкуса) по мне так SoftIce ничто не заменит...))
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines