ݺߣ

ݺߣShare a Scribd company logo
Урок 25. Практическое знакомство с
паттернами 64-битных ошибок
Данная статья содержит различные примеры 64-битных ошибок, собранные в демонстрационном
примере PortSample. Однако, начиная с версии PVS-Studio 3.63, вместо PortSample в дистрибутив
PVS-Studio включается более новая версия примеров, которая называется OmniSample. Поэтому
некоторые скриншоты в статье не соответствуют актуальному состоянию дел.
Знакомство с паттернами 64-битных ошибок закончено, и возможно у вас возникло желание на
практике поэкспериментировать с опасными конструкциями и попробовать PVS-Studio для их
обнаружения. Удовлетворить свой интерес вы можете, установив демонстрационный проект
PortSample, входящий в состав PVS-Studio (рисунок 1).




           Рисунок 1 - Установка проекта PortSample, входящего в состав PVS-Studio

PortSample представляет собой обыкновенный проект на языке Си++, который можно открыть как
в Visual Studio 2005, так и в Visual Studio 2008 (рисунок 2).




 Рисунок 2 - Для изучения PortSample можно использовать Visual Studio 2005 и Visual Studio 2008
В проекте PortSample собраны примеры для всех диагностических сообщений, которые выдает
статический анализатор Viva64, входящий в состав PVS-Studio, при проверке 64-битных проектов.
Количество предупреждений не велико (на момент написания данного текста их количество
составляет 25 штук), но каждое диагностическое сообщение способно выявить большой спектр
ошибочных конструкций. Это позволяет сгруппировать 64-битные ошибки в общие группы, к
которым можно дать общее описание. Это позволяет обойтись в документации без бесконечных
повторений описания одной и той же разновидности ошибок, закодированной в разных
вариантах. В результате документацию к PVS-Studio можно не только пролистать, но и
действительно прочитать, чтобы познакомиться со всеми тонкостями кодирования для 64-битных
систем.

Русскоязычным читателям будет интересен тот факт, что документация по PVS-Studio доступна в
online-режиме на русском языке: справочная система по PVS-Studio.

Программа PortSample имеет интерфейс, показанный на рисунке 3, который позволяет удобно
запускать интересующие вас участки кода. Подробно о содержимом проекта рассказывать не
имеет смысла. Вы сможете самостоятельно изучать интересующий вас код. Также вы можете
обратиться к статье "Проблемы 64-битного кода на примерах", в которой подробно
рассматриваются 64-битные ошибки на примере кода из проекта PortSample.




                              Рисунок 3 - Интерфейс программы

Обратим внимание на один важный момент, связанный с использованием демонстрационной
версии PVS-Studio. Когда демонстрационная версия используется для проверки кода, то хотя и
обнаруживаются все потенциальные ошибки, информация о том, где они расположены в тексте
программы, показывается не во всех диагностических сообщениях. Вместо номера строки
выводится текст "TRIAL RESTRICTION", как показано на рисунке 4.
Рисунок 4 - Использование демонстрационной версии PVS-Studio при проверке 64-битного
            проекта не позволяет просмотреть расположение в коде всех ошибок

Когда демонстрационная версия PVS-Studio работает с проектом PortSample, то показывается
расположение всех ошибок. То есть PVS-Studio не имеет никаких ограничений при работе с
примерами (смотри рисунок 5). Вы можете свободно модифицировать файлы PortSample
содержащие ошибки и полноценно изучать поведение PVS-Studio на написанном вами коде.




  Рисунок 5 - Демонстрационная версия PVS-Studio выводит номера всех строк с ошибками в
                                   проекте PortSample

Возникшие вопросы по использованию PVS-Studio и проекту PortSample вы можете обсудить с
разработчиками анализатора. Мы будем рады комментариям, замечаниям и рекомендациям по
улучшению анализатора PVS-Studio. Пишите нам по адресу support@viva64.com.
Авторы курса: Андрей Карпов (karpov@viva64.com), Евгений Рыжков (evg@viva64.com).

Правообладателем курса "Уроки разработки 64-битных приложений на языке Си/Си++"
является ООО "Системы программной верификации". Компания занимается разработкой
программного обеспечения в области анализа исходного кода программ. Сайт компании:
http://www.viva64.com.

Контактная информация: e-mail: support@viva64.com, 300027, г. Тула, а/я 1800.

More Related Content

Similar to Урок 25. Практическое знакомство с паттернами 64-битных ошибок (20)

Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработке
Tatyanazaxarova
Коллекция примеров 64-битных ошибок в реальных программах
Коллекция примеров 64-битных ошибок в реальных программахКоллекция примеров 64-битных ошибок в реальных программах
Коллекция примеров 64-битных ошибок в реальных программах
Tatyanazaxarova
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
Tatyanazaxarova
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
Tatyanazaxarova
Статический анализатор кода PVS-Studio
Статический анализатор кода PVS-StudioСтатический анализатор кода PVS-Studio
Статический анализатор кода PVS-Studio
cppclimber
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
Tatyanazaxarova
Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreСущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
Tatyanazaxarova
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном коде
Tatyanazaxarova
Статический анализ кода для верификации 64-битных приложений
Статический анализ кода для верификации 64-битных приложенийСтатический анализ кода для верификации 64-битных приложений
Статический анализ кода для верификации 64-битных приложений
Tatyanazaxarova
64 бита для Си++ программистов: от /Wp64 к Viva64
64 бита для Си++ программистов: от /Wp64 к Viva6464 бита для Си++ программистов: от /Wp64 к Viva64
64 бита для Си++ программистов: от /Wp64 к Viva64
Tatyanazaxarova
Забытые проблемы разработки 64-битных программ
Забытые проблемы разработки 64-битных программЗабытые проблемы разработки 64-битных программ
Забытые проблемы разработки 64-битных программ
Tatyanazaxarova
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Tatyanazaxarova
Сравнение статического анализа общего назначения из Visual Studio 2010 и PVS-...
Сравнение статического анализа общего назначения из Visual Studio 2010 и PVS-...Сравнение статического анализа общего назначения из Visual Studio 2010 и PVS-...
Сравнение статического анализа общего назначения из Visual Studio 2010 и PVS-...
Tatyanazaxarova
Сравнение диагностических возможностей анализаторов при проверке 64-битного кода
Сравнение диагностических возможностей анализаторов при проверке 64-битного кодаСравнение диагностических возможностей анализаторов при проверке 64-битного кода
Сравнение диагностических возможностей анализаторов при проверке 64-битного кода
Tatyanazaxarova
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
Описание VivaVisualCode
Описание VivaVisualCodeОписание VivaVisualCode
Описание VivaVisualCode
Tatyanazaxarova
Проблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийПроблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложений
Tatyanazaxarova
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибок
Andrey Karpov
Изменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистовИзменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистов
Tatyanazaxarova
Статический анализ Си++ кода и новый стандарт языка C++0x
Статический анализ Си++ кода и новый стандарт языка C++0xСтатический анализ Си++ кода и новый стандарт языка C++0x
Статический анализ Си++ кода и новый стандарт языка C++0x
Tatyanazaxarova
Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработке
Tatyanazaxarova
Коллекция примеров 64-битных ошибок в реальных программах
Коллекция примеров 64-битных ошибок в реальных программахКоллекция примеров 64-битных ошибок в реальных программах
Коллекция примеров 64-битных ошибок в реальных программах
Tatyanazaxarova
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
Tatyanazaxarova
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
Tatyanazaxarova
Статический анализатор кода PVS-Studio
Статический анализатор кода PVS-StudioСтатический анализатор кода PVS-Studio
Статический анализатор кода PVS-Studio
cppclimber
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
Tatyanazaxarova
Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreСущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
Tatyanazaxarova
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном коде
Tatyanazaxarova
Статический анализ кода для верификации 64-битных приложений
Статический анализ кода для верификации 64-битных приложенийСтатический анализ кода для верификации 64-битных приложений
Статический анализ кода для верификации 64-битных приложений
Tatyanazaxarova
64 бита для Си++ программистов: от /Wp64 к Viva64
64 бита для Си++ программистов: от /Wp64 к Viva6464 бита для Си++ программистов: от /Wp64 к Viva64
64 бита для Си++ программистов: от /Wp64 к Viva64
Tatyanazaxarova
Забытые проблемы разработки 64-битных программ
Забытые проблемы разработки 64-битных программЗабытые проблемы разработки 64-битных программ
Забытые проблемы разработки 64-битных программ
Tatyanazaxarova
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Tatyanazaxarova
Сравнение статического анализа общего назначения из Visual Studio 2010 и PVS-...
Сравнение статического анализа общего назначения из Visual Studio 2010 и PVS-...Сравнение статического анализа общего назначения из Visual Studio 2010 и PVS-...
Сравнение статического анализа общего назначения из Visual Studio 2010 и PVS-...
Tatyanazaxarova
Сравнение диагностических возможностей анализаторов при проверке 64-битного кода
Сравнение диагностических возможностей анализаторов при проверке 64-битного кодаСравнение диагностических возможностей анализаторов при проверке 64-битного кода
Сравнение диагностических возможностей анализаторов при проверке 64-битного кода
Tatyanazaxarova
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
Описание VivaVisualCode
Описание VivaVisualCodeОписание VivaVisualCode
Описание VivaVisualCode
Tatyanazaxarova
Проблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложенийПроблемы тестирования 64-битных приложений
Проблемы тестирования 64-битных приложений
Tatyanazaxarova
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибок
Andrey Karpov
Изменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистовИзменения в инфраструктуре инструментов для программистов
Изменения в инфраструктуре инструментов для программистов
Tatyanazaxarova
Статический анализ Си++ кода и новый стандарт языка C++0x
Статический анализ Си++ кода и новый стандарт языка C++0xСтатический анализ Си++ кода и новый стандарт языка C++0x
Статический анализ Си++ кода и новый стандарт языка C++0x
Tatyanazaxarova

More from Tatyanazaxarova (20)

Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окружения
Tatyanazaxarova
Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программ
Tatyanazaxarova
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
Tatyanazaxarova
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурУрок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структур
Tatyanazaxarova
Урок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхУрок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данных
Tatyanazaxarova
Урок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияУрок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. Исключения
Tatyanazaxarova
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиУрок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен данными
Tatyanazaxarova
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
Tatyanazaxarova
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхУрок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединениях
Tatyanazaxarova
Урок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейУрок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателей
Tatyanazaxarova
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметика
Tatyanazaxarova
Урок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаУрок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвига
Tatyanazaxarova
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовУрок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Tatyanazaxarova
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
Tatyanazaxarova
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложения
Tatyanazaxarova
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурации
Tatyanazaxarova
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
Tatyanazaxarova
PVS-Studio
PVS-Studio PVS-Studio
PVS-Studio
Tatyanazaxarova
Пояснения к статье про Copy-Paste
Пояснения к статье про Copy-PasteПояснения к статье про Copy-Paste
Пояснения к статье про Copy-Paste
Tatyanazaxarova
Статический анализ и ROI
Статический анализ и ROIСтатический анализ и ROI
Статический анализ и ROI
Tatyanazaxarova
Урок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окруженияУрок 27. Особенности создания инсталляторов для 64-битного окружения
Урок 27. Особенности создания инсталляторов для 64-битного окружения
Tatyanazaxarova
Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программ
Tatyanazaxarova
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
Tatyanazaxarova
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурУрок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структур
Tatyanazaxarova
Урок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхУрок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данных
Tatyanazaxarova
Урок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияУрок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. Исключения
Tatyanazaxarova
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиУрок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен данными
Tatyanazaxarova
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
Tatyanazaxarova
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхУрок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединениях
Tatyanazaxarova
Урок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейУрок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателей
Tatyanazaxarova
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметика
Tatyanazaxarova
Урок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаУрок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвига
Tatyanazaxarova
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовУрок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Tatyanazaxarova
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
Tatyanazaxarova
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложения
Tatyanazaxarova
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурации
Tatyanazaxarova
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
Tatyanazaxarova
Пояснения к статье про Copy-Paste
Пояснения к статье про Copy-PasteПояснения к статье про Copy-Paste
Пояснения к статье про Copy-Paste
Tatyanazaxarova
Статический анализ и ROI
Статический анализ и ROIСтатический анализ и ROI
Статический анализ и ROI
Tatyanazaxarova

Урок 25. Практическое знакомство с паттернами 64-битных ошибок

  • 1. Урок 25. Практическое знакомство с паттернами 64-битных ошибок Данная статья содержит различные примеры 64-битных ошибок, собранные в демонстрационном примере PortSample. Однако, начиная с версии PVS-Studio 3.63, вместо PortSample в дистрибутив PVS-Studio включается более новая версия примеров, которая называется OmniSample. Поэтому некоторые скриншоты в статье не соответствуют актуальному состоянию дел. Знакомство с паттернами 64-битных ошибок закончено, и возможно у вас возникло желание на практике поэкспериментировать с опасными конструкциями и попробовать PVS-Studio для их обнаружения. Удовлетворить свой интерес вы можете, установив демонстрационный проект PortSample, входящий в состав PVS-Studio (рисунок 1). Рисунок 1 - Установка проекта PortSample, входящего в состав PVS-Studio PortSample представляет собой обыкновенный проект на языке Си++, который можно открыть как в Visual Studio 2005, так и в Visual Studio 2008 (рисунок 2). Рисунок 2 - Для изучения PortSample можно использовать Visual Studio 2005 и Visual Studio 2008
  • 2. В проекте PortSample собраны примеры для всех диагностических сообщений, которые выдает статический анализатор Viva64, входящий в состав PVS-Studio, при проверке 64-битных проектов. Количество предупреждений не велико (на момент написания данного текста их количество составляет 25 штук), но каждое диагностическое сообщение способно выявить большой спектр ошибочных конструкций. Это позволяет сгруппировать 64-битные ошибки в общие группы, к которым можно дать общее описание. Это позволяет обойтись в документации без бесконечных повторений описания одной и той же разновидности ошибок, закодированной в разных вариантах. В результате документацию к PVS-Studio можно не только пролистать, но и действительно прочитать, чтобы познакомиться со всеми тонкостями кодирования для 64-битных систем. Русскоязычным читателям будет интересен тот факт, что документация по PVS-Studio доступна в online-режиме на русском языке: справочная система по PVS-Studio. Программа PortSample имеет интерфейс, показанный на рисунке 3, который позволяет удобно запускать интересующие вас участки кода. Подробно о содержимом проекта рассказывать не имеет смысла. Вы сможете самостоятельно изучать интересующий вас код. Также вы можете обратиться к статье "Проблемы 64-битного кода на примерах", в которой подробно рассматриваются 64-битные ошибки на примере кода из проекта PortSample. Рисунок 3 - Интерфейс программы Обратим внимание на один важный момент, связанный с использованием демонстрационной версии PVS-Studio. Когда демонстрационная версия используется для проверки кода, то хотя и обнаруживаются все потенциальные ошибки, информация о том, где они расположены в тексте программы, показывается не во всех диагностических сообщениях. Вместо номера строки выводится текст "TRIAL RESTRICTION", как показано на рисунке 4.
  • 3. Рисунок 4 - Использование демонстрационной версии PVS-Studio при проверке 64-битного проекта не позволяет просмотреть расположение в коде всех ошибок Когда демонстрационная версия PVS-Studio работает с проектом PortSample, то показывается расположение всех ошибок. То есть PVS-Studio не имеет никаких ограничений при работе с примерами (смотри рисунок 5). Вы можете свободно модифицировать файлы PortSample содержащие ошибки и полноценно изучать поведение PVS-Studio на написанном вами коде. Рисунок 5 - Демонстрационная версия PVS-Studio выводит номера всех строк с ошибками в проекте PortSample Возникшие вопросы по использованию PVS-Studio и проекту PortSample вы можете обсудить с разработчиками анализатора. Мы будем рады комментариям, замечаниям и рекомендациям по улучшению анализатора PVS-Studio. Пишите нам по адресу support@viva64.com.
  • 4. Авторы курса: Андрей Карпов (karpov@viva64.com), Евгений Рыжков (evg@viva64.com). Правообладателем курса "Уроки разработки 64-битных приложений на языке Си/Си++" является ООО "Системы программной верификации". Компания занимается разработкой программного обеспечения в области анализа исходного кода программ. Сайт компании: http://www.viva64.com. Контактная информация: e-mail: support@viva64.com, 300027, г. Тула, а/я 1800.