> For the complete documentation index, see [llms.txt](https://skkv-itmo.gitbook.io/c-cpp-cookies/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://skkv-itmo.gitbook.io/c-cpp-cookies/debug/breakpoints/tracepoints.md).

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

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

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

{% tabs %}
{% tab title="Visual Studio" %}
Полученный лог может выглядеть примерно так:

{% code lineNumbers="true" %}

```log
'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
```

{% endcode %}
{% endtab %}

{% tab title="CLion" %}
В окне **`Breakpoints`** нажмите на выбранный `Breakpoint` правой кнопкой мыши, убедитесь, что стоит галочка `Evaluate and log` и, по желанию, поставьте свой `Condition`.

<figure><img src="https://4112636200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMqUSFKgvT06FCJhm51b%2Fuploads%2Fgit-blob-35e534c6d640389976f6c62f0cf343f078a3bd8a%2Fclion-tracepoint.png?alt=media" alt=""><figcaption></figcaption></figure>

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

{% code lineNumbers="true" %}

```log
...\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
```

{% endcode %}
{% endtab %}
{% endtabs %}
