Я попытался запустить valgrind (memcheck и массив) в приложении, которое я написал, но все, что я возвращаю, это адреса для выполняемых функций.Valgrind не вернет исходные строки!
---------------------------------
Context accounted for 0.6% of measured spacetime
0x805F29A: (within prog_name)
0x8141740: (within prog_name)
Called from:
0.6% : 0x812E077: (within prog_name)
---------------------------------
Context accounted for 0.5% of measured spacetime
0x805F29A: (within prog_name)
0x81418FB: (within prog_name)
Called from:
0.5% : 0x812E077: (within prog_name)
Я составил мое приложение с флагом -g, чтобы положить отладочные символы в. Есть ли другая причина, почему Valgrind не покажет исходную строку?
EDIT: valgrind version 3.2.1-Debian; g ++ 4.3.1
Не уверен, но если вы 'gdb prog_name' свое приложение и попробуйте что-то вроде' break 0x812E077', 'gdb' показывают номера строк? (Вам не нужно даже «запускать» программу, просто «gdb» загрузите ее.) – aschepler
@aschepler - попробовал. Всякий раз, когда я пытаюсь это сделать, gdb не может найти функцию с именем «0x812E077» и спрашивает, находится ли она в библиотеке, которую она будет загружать позже ... так что это не сработало. –
Упс, это должно было быть 'break * 0x812E077'. Но рад, что вы нашли исправление. – aschepler