Я отлаживаю приложение для исправления ошибки сегментации, которая, как я подозреваю, вызвана состоянием гонки.Лучший способ печати информации при отладке состояния гонки
Я хотел бы поместить в код некоторые операторы печати, но я знаю, что добавление звонков в printf
не рекомендуется, так как это может изменить поведение потоков и в некоторых случаях скрыть ошибку.
Глядя на другие варианты, я видел, что с БГД можно использовать точки останова, чтобы напечатать что-нибудь, а затем автоматически продолжит выполнение:
break foo
commands
silent
printf "Called foo: x is %d\n",x
cont
end
Разве это лучше, чем положить printf
в мой код?
Я знаю, что GDB имеет также Tracepoints, но они работают только с gdbserver и это дополнительный уровень усложнения, что я предпочел бы избежать в данный момент.
Дополнительная информация: приложение написано на C и работает на Linux.
Спасибо за дополнительную информацию: они очень полезны! Похоже, мне действительно нужно попробовать ThreadSanitizer, тогда :) – Muffo