Что происходит при работе с Valgrind? [Дубликат]

>>> line = "abc#@!?efg12;:?"
>>> ''.join( c for c in line if  c not in '?:!/;' )
'abc#@efg12'
4
задан Andrew Grimm 21 December 2012 в 02:55
поделиться

2 ответа

Означает ли это, что ошибка - это гейзенбуг, который не будет возникать, когда я использую valgrind, и поэтому valgrind здесь не используется?

Нет, вы должны по-прежнему использовать Valgrind и исправлять все зарегистрированные ошибки. Поведение, которое вы описали, довольно распространено, и оно описано в FAQ Valgrind :

Когда программа работает под Valgrind, ее среда немного отличается от того, когда она выполняется изначально. Например, макет памяти отличается, и способ, которым запланированы потоки, отличается.

В большинстве случаев это не имеет никакого значения, но может, особенно если ваша программа глючит. Например, если ваша программа выйдет из строя, потому что она ошибочно обращается к незанятой памяти, возможно, что эта память не будет неадресной при запуске под Valgrind. В качестве альтернативы, если ваша программа имеет расы данных, они могут не отображаться в Valgrind.

4
ответ дан ks1322 26 August 2018 в 03:21
поделиться

Возможно, что ошибка сегментации скрыта при компиляции с отладочной информацией или при изменении места размещения при работе под valgrind. Конечно, это не означает, что вы не можете использовать valgrind для отладки вашего приложения. Вы должны исправить все ошибки, которые содержат сообщения valgrind, такие как неверные ошибки чтения / записи. Исправление этих ошибок должно устранить проблему с ошибкой сегментации.

2
ответ дан perreal 26 August 2018 в 03:21
поделиться
Другие вопросы по тегам:

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