Microsoft эквивалент команды nm

Я давно использовал команду cygwin nm для всех своих потребностей в отладке символов.lib, но недавно я подумал о том, чтобы сослаться на нее в ответе SO, и понял, что у большинства разработчиков Windows не установлен cygwin.

Так что же такое Microsoft, эквивалентный nm, т. Е. Какая команда выведет список символов, экспортированных в.lib-файле, неопределенные символы в.lib и т. Д.?

Для любопытных, образец man-страницы nm здесь.

3 ответа

Решение

Попробуйте dumpbin.exe.

Ссылка на MSDN dumpbin.exe.

  1. Бежать vcvarsall.bat который может присутствовать в вашем установленном пути Microsoft Visual Studio. Это устанавливает переменную среды, необходимую для dumpbin.exe,

    D:>"D:\Program Files (x86)\Microsoft Visual Studio 10.0\vcvarsall.bat" x86

  2. Тогда используйте 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располагается.

Другие вопросы по тегам