XCode调试器很糟糕;备择方案?

时间:2010-01-07 22:11:38

标签: c++ xcode macos

我一直在Mac上进行编程,因为我是一个使用THINK C的小孩。我从来没有像使用XCode那样使用调试器。

  • 它没有反应,并且在观察更多变量时进一步陷入困境并变得不稳定。
  • 当它崩溃时,我丢失了我的源的撤消历史记录,因为它与编辑器集成在一起。
  • 它不会从集成中受益,因为源查看器无法用于步进:尝试通过单击左边距选择一条线会使一个按钮无处出现,导致程序继续到编辑器窗口中的那一行,它首先与调试无关。可怕的UI和糟糕的实施。
  • 一种蹒跚的漂亮数据“摘要”语法,它无法将对象发送到“表达式”窗口。
  • 他的表达式窗口始终不知道任何上下文。
  • 我无法选择要调试的特定线程,并且不会跳转到调用abort()的线程。

Mac OS 9 内核调试器比这更好。是时候放弃了。

GDB在OS X上运行的独立前端是什么?我找到了http://ddd.darwinports.com/,但很难找到它或其他替代品的赞美或轶事。

支持STL容器对我来说是一个很大的优势。我对Objective-C或Apple-any不太关心。

5 个答案:

答案 0 :(得分:2)

我倾向于使用valgrind来处理与内存相关的错误; gdb(在一个终端)我想要一个回溯; 并记录+ couts for all else(如果它没有崩溃,并且没有内存损坏,这个bug似乎更容易)。

Admittedtely,不知道如何调试多线程代码。

答案 1 :(得分:1)

您是否尝试过monodevelop?它可以构建和调试C代码,不显示它如何处理obj-c。

如果你可以让DDD工作,我已经在许多奇怪的平台上使用了它,效果很好。 DDD需要X11。

答案 2 :(得分:1)

我和XCode有过相同的经历,最后转向Netbeans和Eclipse(仍然不确定哪一个比我更喜欢哪一个,都有强点和弱点)。

这似乎是一个奇怪的选择,但它们都提供了很好的C ++支持,合理的调试器集成和良好的项目管理选项。我也喜欢重构工具和源版本控制集成。请注意,它们不像Visual Studio 6那样干净整洁。

在这里和其他许多人一样,我不喜欢Objective-C,而且我非常厌倦了为我编写的每个平台学习不同的环境/框架(我每天使用Linux和OSX,偶尔使用Windows)。 Netbeans和Eclipse都是可移植性的一大优势。它们还支持我有时用于较小项目的其他语言(Python会浮现在脑海中)。

答案 3 :(得分:0)

我补充说anon说我最近在SO上发现了这个技巧,它允许更容易的STL调试:

$ cd ~
$ svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python
$ cat ~/.gdbinit
python
import sys
sys.path.insert(0, '/home/USERNAME/python/')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

答案 4 :(得分:0)

我刚刚发现cgdb,一个基于诅咒的gdb前端。也许你会想尝试一下,虽然看起来有点过时了。 (Jan'10)