如何在Xcode中添加条件断点

n17*_*911 2 xcode gdb

如何在Xcode中添加条件断点?我尝试设置断点然后转到"编辑断点"

我希望在字节为0时中断.

所以我在条件中添加'bytes == 0',但它永远不会中断.

然后我尝试'(bytes == 0)'作为我的条件,gdb崩溃:


bool SharedMemory::Map(size_t bytes) {
  if (mapped_file_ == -1)
    return false;

  cout 


gdb stack crawl at point of internal error:
[ 0 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (align_down+0x0) [0x122300]
[ 1 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (wrap_here+0x0) [0x1225f8]
[ 2 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (prepare_threads_before_run+0x270) [0x185320]
[ 3 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (macosx_child_resume+0x263) [0x17e85d]
[ 4 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (resume+0x323) [0x6973d]
[ 5 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (keep_going+0x122) [0x69a01]
[ 6 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (handle_inferior_event+0x3338) [0x6cd4a]
[ 7 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (fetch_inferior_event+0x125) [0x6cfa8]
[ 8 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (inferior_event_handler+0xd0) [0x8216c]
[ 9 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (handle_file_event+0x159) [0x80055]
[ 10 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (process_event+0x81) [0x7fc22]
[ 11 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (gdb_do_one_event+0x46a) [0x80ae5]
LEAK: 918 RenderObject
LEAK: 1 Page
LEAK: 3 Frame
LEAK: 7 SubresourceLoader
LEAK: 95 CachedResource
LEAK: 2000 WebCoreNode
[ 12 ] /Developer/usr/libexec/gdb/gdb-i386-apple-darwin (catch_errors+0x4d) [0x7abe2]
/SourceCache/gdb/gdb-966/src/gdb/macosx/macosx-nat-infthread.c:321: internal-error: assertion failure in function "prepare_threads_before_run": tp != NULL

A problem internal to GDB has been detected,
further debugging may prove unreliable.

The Debugger has exited with status 1.The Debugger has exited with status 1.

Mat*_*ges 6

使用xcode中的条件断点的GDB有点挑剔.我经常发现自己避开条件断点功能,只需添加以下代码:

if (bytes == 0) {
    NSLog(@"here");
}
Run Code Online (Sandbox Code Playgroud)

我在NSLog语句中放了一个普通的断点.