c-cpp-cookies
  • Полезные материалы
    • About
  • Настройка окружения
    • Git
      • Git CLI
      • Git GUI
      • Git Web
      • Git в среде разработке
        • Visual Studio
        • Visual Studio Code
        • CLion
        • Qt Creator
    • Стандарты (они же ISO)
    • Qt about
    • IDE
      • Visual Studio Code
        • Код в Visual Studio Code
        • Разработка в Visual Studio Code
      • Visual Studio
        • Настройки Visual Studio и проектов
        • Код в Visual Studio
        • Visual Studio + GitHub
      • Qt + Qt Creator
        • Установка Qt и QtCreator
        • Примеры проектов на Qt
      • CLion
        • Настройки CLion
        • Код в CLion
        • CLion + GitHub
    • Компиляторы
      • Clang + Visual Studio
      • Clang + CLion
  • Best practices
    • Антипаттерны и способы улучшения кода
      • 0. Освобождение ресурсов
      • 1. Чтение данных из файла
      • 2. Открытие файлов
      • 3. Объявление переменных
      • 4. Выделение памяти
      • 5. Необдуманный код
      • 6. Глубокие if
      • 7. Длинные if
      • 9. Non-void функции
      • 10. Создание массивов
      • 11. Проверка формата файла
  • Сборка программы
    • Сборка программы
    • Системы сборки / Build systems
      • Проект и решение
      • Make
      • Ninja
      • CMake
      • MSBuild
    • Подключение внешних библиотек
    • Библиотеки
  • Отладка
    • Отладка / Debugging
    • Запуск программы
    • Точки останова / Breakpoints
      • Обычные точки останова / General breakpoint
      • Условные точки останова / Conditional breakpoint
      • Зависимые точки останова / Dependent breakpoint
      • Временные точки останова / Temporary breakpoint
      • Точки трассировки / Breakpoint actions и tracepoints
    • Стек вызовов / Call stack
    • Локальные переменные / Locals
    • Просмотр области памяти / Memory view
    • Исключения / Exceptions
  • Анализ
    • Поиск утечек памяти
    • Санитайзеры
  • Возможности IDE
    • Возможности IDE
    • Продвинутый текстовый редактор
    • Закладки / Bookmarks
    • Платформы / Platforms
    • Конфигурации сборки / Build configurations
    • Шаблонные проекты / Project templates
    • Терминал / Terminal
    • Сборка / Build
    • Запуск программы / Run program
    • Code style
    • Работа с Github Actions
  • Тестирование
    • Тестирование
    • Google test
      • Gtest в VS
      • Gtest в CLion
      • Gtest в VSCode
    • Покрытие кода (code coverage)
Powered by GitBook
On this page
  1. Отладка
  2. Точки останова / Breakpoints

Точки трассировки / Breakpoint actions и tracepoints

Точка трассировки (tracepoint) — это точка останова, которая выводит сообщение в окно вывода. Точка трассировки может играть роль временного оператора трассировки в языке программирования и не приостанавливает выполнение кода. Вы создаете точку трассировки, задавая особое действие в окне Параметры точки останова.

В окне настройки tracepoint указывается строка формата, в котором будет выводиться tracelog. Лог трассировки выводиться только при запуске в режиме отладки.

Полученный лог может выглядеть примерно так:

'DebuggingExample.exe' (Win32): Loaded '...\DebuggingExample.exe'. Symbols loaded.
'DebuggingExample.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. 
'DebuggingExample.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. 
'DebuggingExample.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. 
'DebuggingExample.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140d.dll'. 
'DebuggingExample.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ucrtbased.dll'. 
The thread 0x5694 has exited with code 0 (0x0).
In main(int, char * *) i = 0
In main(int, char * *) i = 1
In main(int, char * *) i = 2
In main(int, char * *) i = 3
In main(int, char * *) i = 4
In main(int, char * *) i = 5
In main(int, char * *) i = 6
In main(int, char * *) i = 7
In main(int, char * *) i = 8
In main(int, char * *) i = 9
In main(int, char * *) i = 10
In main(int, char * *) i = 11
In main(int, char * *) i = 12
In main(int, char * *) i = 13
In main(int, char * *) i = 14
In main(int, char * *) i = 15
In main(int, char * *) i = 16
In main(int, char * *) i = 17
In main(int, char * *) i = 18
In main(int, char * *) i = 19
'DebuggingExample.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel.appcore.dll'. 
'DebuggingExample.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. 
'DebuggingExample.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. 
The thread 0x601c has exited with code 0 (0x0).
The thread 0x5e48 has exited with code 0 (0x0).
The program '[27460] DebuggingExample.exe' has exited with code 0 (0x0).lo

В окне Breakpoints нажмите на выбранный Breakpoint правой кнопкой мыши, убедитесь, что стоит галочка Evaluate and log и, по желанию, поставьте свой Condition.

Полученный лог может выглядеть примерно так:

...\cmake-build-debug\DebuggingExample.exe a b c
i = (int) 0
Stack: 
    main(int, char **) Source.c:26
    invoke_main() 0x00007ff6f20915f9
    __scrt_common_main_seh() 0x00007ff6f209172e
    __scrt_common_main() 0x00007ff6f20917ae
    mainCRTStartup(void *) 0x00007ff6f20917ce
    <unknown> 0x00007ffbfa927614
    <unknown> 0x00007ffbfbb026a1
i = (int) 1
Stack: 
    main(int, char **) Source.c:26
    invoke_main() 0x00007ff6f20915f9
    __scrt_common_main_seh() 0x00007ff6f209172e
    __scrt_common_main() 0x00007ff6f20917ae
    mainCRTStartup(void *) 0x00007ff6f20917ce
    <unknown> 0x00007ffbfa927614
    <unknown> 0x00007ffbfbb026a1
i = (int) 2
Stack: 
    main(int, char **) Source.c:26
    invoke_main() 0x00007ff6f20915f9
    __scrt_common_main_seh() 0x00007ff6f209172e
    __scrt_common_main() 0x00007ff6f20917ae
    mainCRTStartup(void *) 0x00007ff6f20917ce
    <unknown> 0x00007ffbfa927614
    <unknown> 0x00007ffbfbb026a1
i = (int) 3
Stack: 
    main(int, char **) Source.c:26
    invoke_main() 0x00007ff6f20915f9
    __scrt_common_main_seh() 0x00007ff6f209172e
    __scrt_common_main() 0x00007ff6f20917ae
    mainCRTStartup(void *) 0x00007ff6f20917ce
    <unknown> 0x00007ffbfa927614
    <unknown> 0x00007ffbfbb026a1
i = (int) 4
Stack: 
    main(int, char **) Source.c:26
    invoke_main() 0x00007ff6f20915f9
    __scrt_common_main_seh() 0x00007ff6f209172e
    __scrt_common_main() 0x00007ff6f20917ae
    mainCRTStartup(void *) 0x00007ff6f20917ce
    <unknown> 0x00007ffbfa927614
    <unknown> 0x00007ffbfbb026a1
Breakpoint reached: Source.c:28
arr[0] = 20
arr[1] = 130
arr[2] = 240
arr[3] = 350
arr[4] = 460
PreviousВременные точки останова / Temporary breakpointNextСтек вызовов / Call stack

Last updated 9 months ago