Любые рекомендуемые настройки VC ++ для лучше анализа PDB сборок конечных версий

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

В представлениях, например в вашем примере, current_app привязан к приложению, обрабатывающему текущий контекст приложения / запроса.

from flask import current_app

@bp.route('/')
def example():
    servers = current_app.config['CUPS_SERVERS']
    ...

Если вам нужно получить доступ к приложению при настройке чертежа, record Декораторы отмечают функции, вызываемые с состоянием, в котором регистрируется проект.

@bp.record
def setup(state):
    servers = state.app.config['CUPS_SERVERS']
    ...

12
задан SamB 14 April 2010 в 21:50
поделиться

7 ответов

"Есть ли любые настройки VC ++, о которых я должен знать"

Удостоверьтесь, что Вы выключаете указатель Кадра ommision. Блог osterman's Larry имеет исторические детали о fpo и проблемах, которые он вызывает с отладкой.

Символы загружаются успешно. Это показывает, что стек вызовов, но дважды щелкающий по записи не приносит мне к исходному коду.

Какую версию VS Вы используете? (Или Вы используете Windbg?)... в VS это должно определенно запросить источник в первый раз, если это не находит местоположение. Однако это также сохраняет список источника, который не был 'найден', таким образом, это не просит у Вас его каждый раз. Иногда не смотрит, список является болью... для возвращения подсказки, необходимо перейти к свойствам узла/свойств/отладки проводника/решения решения и отредактировать список файлов в более низкой области.

Наконец Вы могли бы использовать 'разделенные символы'. Это pdb файлы, сгенерированные для обеспечения информации об отладке для обхода стека вызовов мимо FPO, но с исходными местоположениями, разделенными (наряду с другими данными). Общедоступные символы для компонентов окон OS разделяются pdbs. Для Вашего собственного кода они просто причиняют боль и не стоят того, если Вы не предоставляете свой pdbs внешнему облику. То, как у Вас был бы один из них ужасным, разделило pdbs? У Вас могли бы быть они при использовании "binplace" с командой-a.

Удачи! Надлежащая мини-история дампа является удачей для производственной отладки.

5
ответ дан 2 December 2019 в 22:39
поделиться

Если Ваша сборка непосредственно от Вашей системы управления исходным кодом, необходимо аннотировать pdb файлы источниками файла. Это позволяет Вам автоматически выбирать точные исходные файлы при отладке. (Это - тот же процесс, как используется для получения исходного кода платформы .NET).

См. http://msdn.microsoft.com/en-us/magazine/cc163563.aspx для получения дополнительной информации. Если Вы используете подверсию в качестве своего SCM, можно проверить проект SourceServerSharp.

2
ответ дан 2 December 2019 в 22:39
поделиться

Вы могли, пробуя использование MS-DOS subst команда для присвоения каталога исходного кода D: диск.

1
ответ дан 2 December 2019 в 22:39
поделиться

Visual Studio предлагает Вам путь к исходному файлу?

Нет.

Если это не затем, это не думает, что имеет символы для стека вызовов. Устанавливание исходного пути должно работать, не имея необходимость отображать точное исходное местоположение.

Символы загружаются успешно. Это показывает, что стек вызовов, но дважды щелкающий по записи не приносит мне к исходному коду. Я могу, конечно, искать в файлах рассматриваемую строку, но это - тяжелая работа :)

0
ответ дан 2 December 2019 в 22:39
поделиться

В случае, если любому интересно, коллега ответил на этот вопрос мне по электронной почте:

Artem записал:

Существует флаг к MiniDumpWriteDump (), который может сделать лучшие дампы катастрофического отказа, которые позволят видеть полное состояние программы, со всеми глобальными переменными, и т.д. Что касается стеков вызовов, я сомневаюсь, что они могут быть лучше из-за оптимизации..., если Вы не поворачиваете (возможно, некоторые) оптимизацию прочь.

Кроме того, я думаю, отключая подставляемые функции, и целая оптимизация программы поможет довольно много.

На самом деле существует много типов дампа, возможно, Вы могли выбрать одно достаточно маленькое, но все еще имеющий больше информации http://msdn.microsoft.com/en-us/library/ms680519 (По сравнению с 85) .aspx

Те типы не помогут со стеком вызовов, хотя, они только влияют на сумму переменных, Вы сможете видеть.

Я заметил, что некоторые из тех типов дампа не поддерживаются в версии 5.1 dbghelp.dll, которую мы используем. Мы могли обновить его к новейшему, 6,9 версий, хотя, я только что проверил EULA на Средства отладки MS - новейший dbghelp.dll все еще в порядке для перераспределения.

0
ответ дан 2 December 2019 в 22:39
поделиться

Это - процедура, которую я использовал после некоторой проблемы, подобной Вашему:

a) Скопированный в рабочий сервер все файлы EXE & DLL, которые были созданы, каждый с ее соответствующим PDB к тому же каталогу, запустили систему и ожидали катастрофического отказа для случая.

b) Скопированный назад все файлы EXE, DLL & PDB в машину разработки (к временной папке) наряду с мини-дампом (в той же папке). Используемая Visual Studio для загрузки мини-дампа из той папки.

Так как VS нашел исходные файлы, где они были первоначально скомпилированы, он всегда смог определить их и загрузить их правильно. Как с Вами, в производственной машине используемый диск не был C:, но в машине разработки это было.

Еще две подсказки:

  • Одна вещь, которую я делал часто, состояла в том, чтобы копировать восстановленный EXE/DLL и забывать копировать новый PDB. Это разрушило цикл отладки, VS не сможет показать мне стек вызовов.

  • Иногда, я получил стек вызовов, который не имел смысла в VS. После некоторой головной боли я обнаружил, что windbg будет всегда показывать мне корректный стек, но VS часто не был бы. Не знайте почему.

1
ответ дан 2 December 2019 в 22:39
поделиться

Visual Studio предлагает Вам путь к исходному файлу? Если это не затем, это не думает, что имеет символы для стека вызовов. Устанавливание исходного пути должно работать, не имея необходимость отображать точное исходное местоположение.

Можно сказать, загружаются ли символы путем рассмотрения окна 'модулей' в Visual Studio.

Принятие Вас создает PDB затем, я не думаю, что существуют любые опции, которые управляют объемом информации в PDB непосредственно. Можно изменить тип оптимизации, выполненной компилятором для улучшения debuggabilty, но это будет стоить производительности - как коллега указывает, запрещение встроенного поможет сделать вещи более очевидными в файле катастрофического отказа, но будет стоить во времени выполнения.

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

0
ответ дан 2 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: