Microsoft эквивалент команды nm
Я давно использовал команду cygwin nm для всех своих потребностей в отладке символов.lib, но недавно я подумал о том, чтобы сослаться на нее в ответе SO, и понял, что у большинства разработчиков Windows не установлен cygwin.
Так что же такое Microsoft, эквивалентный nm, т. Е. Какая команда выведет список символов, экспортированных в.lib-файле, неопределенные символы в.lib и т. Д.?
Для любопытных, образец man-страницы nm здесь.
3 ответа
Бежать
vcvarsall.bat
который может присутствовать в вашем установленном пути Microsoft Visual Studio. Это устанавливает переменную среды, необходимую дляdumpbin.exe
,D:>"D:\Program Files (x86)\Microsoft Visual Studio 10.0\vcvarsall.bat" x86
Тогда используйте
dumpbin.exe
, Напримерdumpbin.exe /ALL <bin_file>
дает все символы.
Команда предоставляет опцию, которая показывает расчлененные имена. В Linux/MacOSX есть почти то же самое, что и-C
для нм.
В Windows есть dumpbin.exe, что-то вродеnm
на Линуксе. А также естьundname
в Windows, что похожеc++filt
в Linux:(https://learn.microsoft.com/en-us/cpp/build/reference/decorated-names?view=msvc-170)
C:\>undname ?func1@a@@AAEXH@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.
Undecoration of :- "?func1@a@@AAEXH@Z"
is :- "private: void __thiscall a::func1(int)"
Вам также может понадобиться vswhere , чтобы найти, гдеdumpbin.exe
иundname.exe
располагается.