отладка локальных кодов в конструкторах c ++ - PullRequest
0 голосов
/ 11 сентября 2010

Я занимаюсь разработкой приложения на C ++ с Xcode 3.1.4 при отладке, если я захожу в конструктор, я вижу только переменные-члены, но в конструкторе не используются локальные переменные.

Кто-нибудь знает эту проблему и как ее решить?

Ответы [ 3 ]

1 голос
/ 16 марта 2011

Я видел где-то еще, что -gstabs + решает аналогичную проблему, специфичную для локальных объектов в конструкторах. Я не пробовал, но решение, которое работало для меня, состояло в том, чтобы переместить тело кода в приватную функцию с теми же аргументами и вызвать эту функцию из конструктора. Такое же поведение, но теперь вы можете отлаживать код ...

0 голосов
/ 11 сентября 2010

Очевидный вопрос: вы работаете без оптимизаций (-O0), верно?При оптимизации обычно оптимизируются локальные переменные.Даже без оптимизаций я обнаружил, что многие простые C ++ кажутся скрытыми.Например, вы не всегда можете вызвать get() для shared_ptr, потому что он встроен.

Я рекомендую перейти на Xcode 3.2.Я чувствую, что поддержка C ++ несколько улучшилась между 3.1 и 3.2.Тем не менее, поддержка C ++ в Xcode все еще очень слаба.Если вам не нужна переносимость C ++ (как и мне), я не рекомендую разрабатывать приложения для Mac или iPhone на C ++.Вы будете бороться с системой весь день.Гораздо лучше просто изучить ObjC и использовать его (кроме того, ObjC действительно очень мощный язык и очень хорошо работает с Cocoa).Даже когда вам нужна переносимость C ++, я рекомендую изолировать код C ++ в ядро ​​и обернуть его в Objective-C.

Ни в коем случае не следует использовать ObjC ++ в большом количестве.GDB очень запутался в моем опыте с ObjC ++.Если вы собираетесь писать на C ++, оберните ваш ObjC.Если вы собираетесь писать в ObjC, оберните ваш C ++.Но не пытайтесь писать обоими одновременно, если вы планируете использовать отладчик.

0 голосов
/ 11 сентября 2010

Это может быть ошибка в компиляторе, такая как эта .Вы можете попробовать обновить g++ или использовать другой компилятор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...