2010-10-03 2 views
3

Я играю с gdb в xcode, отлаживая приложение iphone.Использование команды gdb info malloc в xcode (iphone dev)

Предположительно, я должен иметь возможность использовать следующую команду:

info malloc <0xaddress> 

см http://www.friday.com/bbum/2010/01/10/using-malloc-to-debug-memory-misuse-in-cocoa/ и strange GDB error unable to trace

У меня ENV вары MallocStackLoggingNoCompact = 1 и NSZombieEnabled = YES набор (с помощью исполняемого файла в Xcode).

Однако, я получаю это:

2010-10-03 21:29:01.366 memleaktest[10881:307] *** -[one release]: message sent to deallocated instance 0x1646b0 
(gdb) info malloc 0x1646b0 
Undefined info command: "malloc 0x1646b0". Try "help info". 

Что мне не хватает, чтобы выполнить эту команду? (Xcode 3.2.4 и iphone SDK 4,1)

ответ

1
  1. В Xcode пойти Run -> Enable Guard таНос
  2. Установить переменную окружения MallocStackLoggingNoCompact ДА (как вы уже сделали)

, чтобы убедиться, журналы записываются в консоли отладчика вы должны увидеть это сообщение:

malloc: stack logs being written into /tmp/stack-logs.xxxx.MyApp.xxxxxx.index 

Теперь вы должны быть в состоянии:

(gdb) info malloc 0x1646b0 
+0

К сожалению, это все еще не работает. Несколько вещей, которые я заметил: а) если я просто набираю «info», я не вижу malloc как возможную подкоманду. b) Я получаю memtest (2739) malloc: журналы стека записываются в /private/var/mobile/Applications/1F962F35-9C52-4490-9D22-F5D41DC6AB7C/tmp/stack-logs.2739.memtest.index memtest (2739) malloc: Пожалуйста, выпустите: cp /private/var/mobile/Applications/1F962F35-9C52-4490-9D22-F5D41DC6AB7C/tmp/stack-logs.2739.memtest.DUY4ZH.link/tmp/который является местоположением на моем iphone, а не мой mac – Brynjar

+0

c) в оригинальной статье friday.com упоминается сбор мусора. Теперь я понимаю, что это только mac - так это относится даже к iphone? – Brynjar

+0

OK. Этот материал действительно работает для iphone, но только с использованием симулятора. Попробуйте и отлаживайте устройство, и вы получите странность в моих предыдущих комментариях. Я обнаружил, что тебе не нужен гей-маллок. Спасибо за помощь. – Brynjar

3

Оказывается, вы можете узнать только malloc во время отладки в симуляторе - не на устройстве.

0

Опыт такой же сложной проблемы, какой-либо работоспособный метод найден? Жесткий этот сбой происходит только в устройстве, а не в симуляторе.

Смежные вопросы