我正在使用NSTextView开发应用。当我将随机字节粘贴到其中时(例如,从编译的C程序中),它会显示乱码,就像它应该的那样。但是,当I -setShowsControlCharacters:YES时,同样会导致崩溃并多次出现以下错误:
2008-11-22 00:27:22.671 MyAppName[6119:10b] *** -[NSBigMutableString _getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:]: Range or index out of bounds
我创建了一个新项目,只有一个具有相同属性的NSTextView,它没有这个问题。
我的问题是,如何调试我的应用以查找错误原因?我不知道bug的来源。我不熟悉Xcode内置的调试器。如果有人能指出我如何追踪这样的错误,我将非常感激。感谢。
答案 0 :(得分:10)
调试Cocoa应用程序objc_exception_throw
和-[NSException raise]
时要设置的另一组有用断点。在10.5中,所有异常都会通过objc_exception_throw
,但如果您要定位Tiger,则应在两者上设置断点。
http://www.cocoadev.com/index.pl?DebuggingTechniques有更多调试技巧。
答案 1 :(得分:4)
我不知道你知道多少,所以我会尝试一种非常基本的方法,请不要被冒犯。
我假设NSTextView位于外部nib / xib中,并且不是以编程方式创建的。
如果是这样,请在“界面”构建器中打开nib / xib,然后单击有问题的NSTextView元素。
然后点击 Cmd-5 或工具 - > Connections Inspector
从这里,您可以看到实际源代码中要查找的 Outlets / Actions 。
最有可能的问题是操纵“参考插座”对象,或“已发送操作”功能。
一旦您知道需要注意哪些方法/变量,就可以在Xcode中打开这些部分的源代码。然后,您可以通过单击编辑器窗口左侧的行号在任何行设置断点。
点击运行 - >调试器。应弹出一个新窗口,单击该窗口工具栏中的“运行并转到”。您的应用应该正常运行,直到它达到您在源代码中设置的断点。当突破点被击中时,你可以将代码中的变量鼠标悬停在调试器窗口的下半部分。应弹出变量的当前值,以便于检查。
通常,您可以使用调试器的右上方面板来检查变量表,从而获得相同的信息。
完成该断点后,单击调试器窗口顶部的“继续”,程序将执行到完成或下一个断点。
这应该让您开始在Xcode下进行调试。 他们是断点的不同种类/用途以及你可以在Xcode中做的各种额外的花哨的东西。 有关更多信息,请查看这个真棒CocoaHeads video。
祝你好运,
Brian G.