Я предвосхищаю свой ответ, признавая, что у меня нет опыта работы с Докером, кроме как заядлым наблюдателем того, что выглядит действительно аккуратным решением, которое набирает обороты.
У меня есть приличный опыт работы с Vagrant, и я очень рекомендую его. Это, безусловно, более тяжелое решение с точки зрения того, что оно основано на виртуальной машине, а не на LXC. Однако я обнаружил, что приличный ноутбук (8 ГБ ОЗУ, процессор i5 / i7) без проблем запускает виртуальную машину с использованием Vagrant / VirtualBox вместе с инструментами разработки.
Одна из действительно замечательных возможностей Vagrant - это интеграция со скриптами Puppet / Chef / shell для автоматизации конфигурации. Если вы используете один из этих параметров для настройки своей производственной среды, вы можете создать среду разработки, максимально приближенную к идентичной, которую вы собираетесь получить, и это именно то, что вам нужно.
Еще одно замечательное свойство Vagrant - это то, что вы можете создавать версии Vagrantfile вместе с кодом приложения. Это означает, что все остальные в вашей команде могут поделиться этим файлом, и вы гарантированно, что все работают с одинаковой конфигурацией среды.
Интересно, что Vagrant и Docker на самом деле могут быть приветственными. Vagrant может быть расширен для поддержки различных поставщиков виртуализации, и может оказаться, что Docker станет одним из таких поставщиков, который получит поддержку в ближайшем будущем. См. https://github.com/dotcloud/docker/issues/404 для недавнего обсуждения этой темы.
Есть несколько подходов:
Обычно вы можете увидеть код сборки при отладке C ++ в Visual Studio (и в Eclipse тоже). Для этого в Visual Studio поставьте точку останова на рассматриваемый код, и когда отладчик достигнет ее, щелкните правой кнопкой мыши и найдите «Перейти к сборке» (или нажмите CTRL + ALT + D)
Второй подход - создание списков сборок во время компиляции. Для этого перейдите в настройки проекта -> C / C ++ -> Выходные файлы -> Расположение списка ASM и введите имя файла. Также выберите «Вывод сборки» на «Сборка с исходным кодом».
Скомпилируйте программу и используйте любой сторонний отладчик. Для этого вы можете использовать OllyDbg или WinDbg. Также вы можете использовать IDA (интерактивный дизассемблер). Но это хардкорный способ сделать это.
Укажите переключатель / FA для cl компилятор. В зависимости от значения переключателя интегрируется либо только код сборки, либо код высокого уровня и код сборки. Имя файла получает расширение .asm. Вот поддерживаемые значения:
Самый простой способ - запустить отладчик и проверьте окно разборки .
В Visual C ++ параметры проекта в разделе «Файлы вывода», как мне кажется, имеют возможность вывода списка ASM с исходным кодом. Таким образом, вы увидите исходный код C / C ++ и результирующий ASM в одном файле.
Рефлектор .NET Red Gate - отличный инструмент, который помогал мне более чем несколько раз. Плюс этой утилиты, помимо простой демонстрации MSIL, заключается в том, что вы можете анализировать множество сторонних DLL, а Reflector позаботится о преобразовании MSIL в C # и VB.
I '
Дополнительное примечание: существует большая разница между выводом отладочного ассемблера и первым выпуском. Первый полезен, чтобы узнать, как компилятор создает код ассемблера из C ++. Второй полезен, чтобы узнать, как компилятор оптимизирует различные конструкции C ++. В этом случае некоторые преобразования C ++ в asm не очевидны.