Что такое использование .map-файлов. Компилятор VC++ создает, когда используется параметр проекта/MAP или «Создать файл файла карты»? Когда они мне нужны и как мне от них выгодно?Что использовать файлы .map, которые создает компоновщик?
ответ
Хорошая статья о том, как использовать файлы карт для поиска сбоев.
http://www.codeproject.com/KB/debug/mapfile.aspx
делать все это вручную очень неинтересным.
Мне не известны никакие инструменты, которые могут читать файл карты и помогать в поиске места сбоя. Если кто-нибудь знает, пожалуйста, уточните нас.
Вы нуждаетесь в них редко, но им может быть удобно отладить некоторые проблемы, потому что они предоставляют информацию о расположении функций и данных.
Например:
- подробная информация по всем сегментам (код, данные и другие).
- номера строки ссылку закодировать
Вы можете использовать файлы карты для средств отладки.
Вы имеете в виду открытие разборки процесса и проверку необработанных адресов? – sharptooth
Это возможность. Как я уже сказал, они нужны вам редко, но если они вам нужны, вы рады, что они доступны. –
Для встроенных систем файлы карт намного полезнее. (Хотя вы бы не использовали Visual C++ для этого;)
Такие вещи, как знание того, насколько близко вы заканчиваете работу с памятью программы/данных и какое место занимает конкретная переменная, важны.
Есть ли что-нибудь на платформе UNIX, похожее на файлы списка? Если да, то как мне его создать? – Shree
не знаю. проверьте свою документацию компилятора. –
WinDBG использует файлы .map и .pdb, чтобы помочь отлаживать сбои при анализе аварийных дампов .hdmp и .mdmp.
В основном они сопоставляют адреса памяти с функциями и переменными внутри .exe (или .dll). Очень полезно вообще.
EDIT: Самый полезный способ отладки «после факта» сбоев использует WinDbg для меня (платформа Windows). Откройте его и откройте аварийную свалку. Затем установите исходный путь на код (если он у вас есть), путь к символу, указывающий на ваш .map и .pdb и путь к файлу .exe, и введите «! Analysis -v» в командной строке , Теперь у вас есть полная трассировка стека с строками кода и всего остального.
Это даже лучше, если у вас есть сервер символов MS в пути, и если включена полная куча страниц или работает adplus. Смотрите эти два любимых Windbg ресурсы шахты:
Первая остановка :: http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx
Force загрузить символы :: http://www.osronline.com/ShowThread.cfm?link=182377
Полезный сайт :: http://www.dumpanalysis.org/blog/index.php/category/windbg-tips-and-tricks/page/7/
Linker карты могут быть очень полезны в больших проектах, когда вам необходимо отслеживать зависимости между единицами компиляции и библиотеками. Как правило, компоновщик будет сообщать о символе, который вызвал проблемы, и чаще всего простой поиск этого имени символа не вернет никаких результатов (или вернет тонны ложных срабатываний для таких символов, как read
).
Без карты-компоновщика единственный вариант, который у вас есть, - это проанализировать все доступные исходные файлы (после прохождения предварительной обработки, если были использованы макросы, что обычно имеет место), и надеемся, что вы найдете соответствующее место.
У карт-компоновщика обычно есть раздел «ссылка по файлу/символу», который сообщает вам, какой объектный файл был нужен другим объектным файлом вашего проекта, и на какой именно символ ссылались.
Я когда-то работал над проектом, который нужно было портировать в систему без поддержки локали. Компилятор сообщал «неопределенные ссылки на ошибки _localeconv_r
», что было бы болью для отслеживания путем поиска через источники. К счастью, файл карты компоновщика GCC, созданный с помощью -Map=output.map
, выявил все проблемные функции с одним поиском.
- 1. Где компоновщик устанавливает файлы?
- 2. Webpack создает файлы, которые не импортируются
- 3. Посмотрите на временные файлы, которые создает процесс
- 4. Как C++-компоновщик знает, какие файлы .cpp использовать
- 5. Что создает эти файлы с расширением jmconfig?
- 6. Google pnacl: как использовать компилятор/компоновщик
- 7. Что такое динамический компоновщик в программировании?
- 8. Makefile, который создает исполняемые файлы, которые запускаются сценарии Node
- 9. После того, как bash распечатал файлы, которые он создает
- 10. Создает ли PyS60 файлы sis, которые являются родными?
- 11. AVAudioRecorder не создает файлы .m4a, которые можно открыть и воспроизвести
- 12. Web Deployment создает файлы, которые больше не являются частью проекта
- 13. Как компоновщик создает библиотеку? Каково содержимое этой библиотеки?
- 14. Почему компоновщик создает, по-видимому, бесполезные перестановки в .rela.plt?
- 15. Поиск файлов классов, которые Eclipse создает
- 16. Экспортированный JAR не создает файлы, которые он должен
- 17. Force gcc использовать один компоновщик над другим
- 18. Как включить/использовать компоновщик Bootstrap в CodeIgniter?
- 19. Как использовать компоновщик GNU вместо Darwin Linker?
- 20. GCC, компоновщик-скрипт: переменные, которые разрешают вручную определенные адреса?
- 21. Можно ли использовать компоновщик с кодом?
- 22. Где питон создает файлы
- 23. Gulp не создает файлы
- 24. Что такое файлы Local.testsettings и TraceAndTestImpact.testsettings, которые Visual Studio создает при запуске нового тестового проекта?
- 25. Нежелательные .map файлы, созданные
- 26. CopyToAsync создает файлы нулевой длины (потому что приложение закрывается)
- 27. Студия Android не создает файлы
- 28. git создает файлы, заканчивающиеся на ~?
- 29. Matlab создает файлы без разрешения
- 30. Что делает parallelstream(). Map(). Map() do?
GNU Gas генерирует файлы '.map' с' -a'. –