2013-11-02 3 views
1

Я хочу удалить частный символ из файла символов с помощью binplace.exe, я сохранил следующую команду в пакетном файле «parse.bat»: binplace -a -x -s %_NTTREE%\stripped -n %_NTTREE%\full my-executable-file-name.

Вопрос: Когда я выполнил команду parse.bat из командной строки, binplace может генерировать лишенный файл символа должным образом, но если я выполнил parse.bat, дважды щелкните по нему, binplace не сможет сгенерировать лишенный файл символа, вот выходное сообщение от binplace с помощью -v опции:
Ошибка об использовании binplace.exe в пакетных файлах

execute by double-click: 
BINPLACE : warning GNA0293: Not a response file (-s) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\stripped) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\stripped) 
BINPLACE : warning GNA0293: Not a response file (-n) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\full) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\full) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\SystemTool.exe) 

BINPLACE : warning BNP0000: Looking at file SystemTool.exe 
BINPLACE : warning BNP0000: Class bin Not found in Class Tables 
BINPLACE : warning BNP0000: place f:\SymbolServer\SystemTool.exe in f:\SymbolServer\bin\SystemTool.exe 
binplace f:\SymbolServer\SystemTool.exe 
BINPLACE : warning BNP0000: copy f:\SymbolServer\SystemTool.exe to f:\SymbolServer\bin\SystemTool.exe 
BINPLACE : warning BNP0000: No symbols to strip from f:\SymbolServer\bin\SystemTool.exe 
BINPLACE : warning BNP1536: Public symbols being copied to f:\SymbolServer\stripped\bin\exe\. 
BINPLACE : warning BNP0000: place f:\SymbolServer\SystemTool.pdb in f:\SymbolServer\stripped\bin\exe\SystemTool.pdb 
BINPLACE : warning BNP2700: Unable to copy (f:\SymbolServer\SystemTool.pdb,f:\SymbolServer\stripped\bin\exe\SystemTool.pdb) 126 
BINPLACE : warning BNP0000: place f:\SymbolServer\SystemTool.pdb in f:\SymbolServer\full\bin\exe\SystemTool.pdb 
BINPLACE : warning GNA0127: Command line finished 
Press any key to continue . . . 

execute from command-line: 
F:\SymbolServer>parse.bat 
BINPLACE : warning GNA0293: Not a response file (-s) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\stripped) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\stripped) 
BINPLACE : warning GNA0293: Not a response file (-n) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\full) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer\full) 
BINPLACE : warning GNA0293: Not a response file (f:\SymbolServer SystemTool.exe) 

BINPLACE : warning BNP0000: Looking at file SystemTool.exe 
BINPLACE : warning BNP0000: Class bin Not found in Class Tables 
BINPLACE : warning BNP0000: place f:\SymbolServer\SystemTool.exe in f:\SymbolServer\bin\SystemTool.exe 
binplace f:\SymbolServer\SystemTool.exe 
BINPLACE : warning BNP0000: copy f:\SymbolServer\SystemTool.exe to f:\SymbolServer\bin\SystemTool.exe 
BINPLACE : warning BNP0000: Symbols stripped from f:\SymbolServer\bin\SystemTool.exe into f:\SymbolServer\stripped\bin\exe\SystemTool.dbg 
BINPLACE : warning BNP0000: place f:\SymbolServer\SystemTool.pdb in f:\SymbolServer\full\bin\exe\SystemTool.pdb 
BINPLACE : warning GNA0127: Command line finished 
Press any key to continue . . . 

Использование symchk, я подтвердил, что SystemTool.exe имеет только частный символ, выходное сообщение приведена ниже:

F:\SymbolServer>symchk /v SystemTool.exe /s . 
[SYMCHK] Searching for symbols to F:\SymbolServer\SystemTool.exe in path . 
DBGHELP: Symbol Search Path: . 
[SYMCHK] Using search path "." 
DBGHELP: No header for F:\SymbolServer\SystemTool.exe. Searching for image on d 
isk 
DBGHELP: F:\SymbolServer\SystemTool.exe - OK 
DBGHELP: SystemTool - private symbols & lines 
     .\SystemTool.pdb 
[SYMCHK] MODULE64 Info ---------------------- 
[SYMCHK] Struct size: 1672 bytes 
[SYMCHK] Base: 0x00400000 
[SYMCHK] Image size: 10293248 bytes 
[SYMCHK] Date: 0x52395664 
[SYMCHK] Checksum: 0x009cd39e 
[SYMCHK] NumSyms: 0 
[SYMCHK] SymType: SymPDB 
[SYMCHK] ModName: SystemTool 
[SYMCHK] ImageName: F:\SymbolServer\SystemTool.exe 
[SYMCHK] LoadedImage: F:\SymbolServer\SystemTool.exe 
[SYMCHK] PDB: ".\SystemTool.pdb" 
[SYMCHK] CV: RSDS 
[SYMCHK] CV DWORD: 0x53445352 
[SYMCHK] CV Data: D:\cwork\DriverLoader\Debug\SystemTool.pdb 
[SYMCHK] PDB Sig: 0 
[SYMCHK] PDB7 Sig: {444090A7-6BE8-4310-BD87-4ABCA3F8E8A9} 
[SYMCHK] Age: 1 
[SYMCHK] PDB Matched: TRUE 
[SYMCHK] DBG Matched: TRUE 
[SYMCHK] Line nubmers: TRUE 
[SYMCHK] Global syms: TRUE 
[SYMCHK] Type Info: TRUE 
[SYMCHK] ------------------------------------ 
SymbolCheckVersion 0x00000002 
Result    0x001f0001 
DbgFilename 
DbgTimeDateStamp 0x52395664 
DbgSizeOfImage  0x009d1000 
DbgChecksum   0x009cd39e 
PdbFilename   F:\SymbolServer\SystemTool.pdb 
PdbSignature  {444090A7-6BE8-4310-BD87-4ABCA3F8E8A9} 
PdbDbiAge   0x00000001 
[SYMCHK] [ 0x00000000 - 0x001f0001 ] Checked "F:\SymbolServer\SystemTool.exe" 

SYMCHK: FAILED files = 0 
SYMCHK: PASSED + IGNORED files = 1 

Кто может сказать мне, почему и как его решить.

+0

Ваша команда использует переменную окружения, которая не отображается или не указана, и мы не можем видеть ваш командный файл, поэтому у нас нет полной картины того, что происходит. – foxidrive

+0

@foxidrive, спасибо за ваш пост, вот мой командный файл: '@echo от множество _NTTREE = F: \ SymbolServer множество BINPLACE_PLACEFILE =% _ NTTREE% \ placefile.txt binplace -a -x -v -s% _NTTREE% \ stripped -n% _NTTREE% \ full% _NTTREE% \ SystemTool.exe пауза'. – Kecise

ответ

1

Это ответ на ваш комментарий, поэтому я могу вставить код.

Ваш код устанавливает другую переменную - где это используется?

Попробуйте с помощью команды pause и посмотрите, работает ли она так же в командной строке cmd и при двойном щелчке. Не добавляйте к нему ничего. It occurs to me that you may not have typed the batch file name at the command line - did you do that?

BTW, если он по-прежнему не работает при двойном щелчке, то проверьте, имеет ли ваш путь \ batchname символ &, а может быть, некоторые цифры %.

@echo off 
set _NTTREE=f:\SymbolServer 
set BINPLACE_PLACEFILE=%_NTTREE%\placefile.txt 
binplace -a -x -v -s %_NTTREE%\stripped -n %_NTTREE%\full 
pause 
%_NTTREE%\SystemTool.exe 
pause 
Смежные вопросы