标签: lldb

如何在 UIView 隐藏属性上设置断点?

我想在 UIView 隐藏属性上设置断点,确实是 setHidden,我该怎么办?我知道在控制台(lldb)中执行:b "-[UIViewController viewWillDisappear:]" 可以设置符号断点。

debugging xcode lldb

1
推荐指数
1
解决办法
905
查看次数

lldb命令if语句

您好,我需要编写一个lldb断点命令来计算一个值并打印出一个值。在gdb中我可以这样做:

if ($value==2)
    printf "Value is 2\n"
end
Run Code Online (Sandbox Code Playgroud)

但在 lldb 中,“if 语句”似乎无效:

failed with error: 'if' is not a valid command.
error: Unrecognized command 'if'.
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何在断点命令中编写此比较?谢谢!

command if-statement breakpoints lldb

1
推荐指数
1
解决办法
810
查看次数

XCode LLDB - 从给定框架获取自身

我想从给定的框架中获取“自我”。有没有办法做到这一点?

我尝试了“框架信息”和其他一些选项。

(lldb) frame info frame #11: 0x0000000102767ab8 UIKit`-[UIImageView _resolveImageForTrait:] + 463 (lldb)

例如,在下面的示例中,我想要第 11 帧中的按钮对象。

在此输入图像描述

debugging xcode lldb

1
推荐指数
1
解决办法
472
查看次数

有没有相当于 gdbserver 的 lldb ?

我最近开始在 macOS 上进行开发,需要通过启动调试服务器并从另一台计算机连接到它来远程调试进程。使用 GDB 我会在要调试的机器上执行此操作:

gdbserver :<port> --attach <pid>

然而,GDB 似乎不再在 macOS 上受支持,因为社区显然已转向使用lldb. 但是,我无法找到使用 lldb 启动调试服务器的等效命令。我找到了这个等效页面,但唯一提到的类似内容是使用 lldb 作为连接到某个远程服务器的客户端。

我发现提到了一个lldb-server命令,但我找不到有关如何安装它的文档,因为它没有附带 macOS 上的标准命令行工具包。

debugging macos gdb lldb osx-mavericks

1
推荐指数
1
解决办法
2227
查看次数

在lldb中设置条件断点

全部,

我需要在 OSX 上的 lldb 中设置一个断点,以便程序在第二次命中时停止。

那么我应该在以下内容中添加什么:

break set -f myfile.mm -l 100
Run Code Online (Sandbox Code Playgroud)

尝试调试键盘问题。

蒂亚!

breakpoints conditional-statements lldb

1
推荐指数
1
解决办法
1080
查看次数

如何使用Swift在LLDB中打印等效的#line #file #function?

在源代码中,如果我这样做:

print("\(#file) \(#line) \(#function)")
Run Code Online (Sandbox Code Playgroud)

我得到如下输出:

MyFile.swift 31 doFoo()
Run Code Online (Sandbox Code Playgroud)

但是,从 LLDB 中的断点开始,如果我执行类似操作:

(lldb) po "\(#file) \(#function) \(#line)"
Run Code Online (Sandbox Code Playgroud)

我得到:

"<EXPR> $__lldb_expr(_:) 6"
Run Code Online (Sandbox Code Playgroud)

有没有办法从后者获得像前者那样的输出?我知道你可以这样做:

(lldb) frame info
frame #0: 0x0000000102d92c46 MyApp `closure #2 in Client.fetchCart($0=(error_instance = 0x0000600000810be0 -> 0x0000000108e88cc0 (void *)0x0000000108e88ce8: __SwiftNativeNSError)) at Client+Cart.swift:21:23
Run Code Online (Sandbox Code Playgroud)

......但输出非常混乱。有没有办法把它清理成文件、行和函数?

lldb swift

1
推荐指数
1
解决办法
56
查看次数

错误:在 LLDB 中调用 stl 方法时无法查找符号

当我想改变程序的执行时,我通过调整向量大小进行调试,但出现错误:

(lldb) expression std_vector_foo.resize(1)
error: Couldn't lookup symbols:
  std::vector<string_id<mtype>, std::allocator<string_id<mtype> > >::resize(unsigned long)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,以下运行良好:

expression std_vector_foo.reserve(1)
Run Code Online (Sandbox Code Playgroud)

c++ debugging stl lldb

1
推荐指数
1
解决办法
1506
查看次数

gdb和lldb调试器之间的不同行为

我正在加载一组朋友并将其传递给我的uitableview,每件事情都有效,但是当我在方法中设置一个断点时:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:             (NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

使用gdb调试器我可以看到我的朋友NSMutableArray的内容和lldb它说好友数组有零对象但它按预期工作,所有的朋友都在显示...因为Apple推荐使用lldb你怎么调试它?因为它甚至没有显示我的对象的内容...加上如果你有控制台命令/技巧,你用gdb/lldb进行调试将不胜感激.

gdb objective-c lldb

0
推荐指数
1
解决办法
2575
查看次数

LLDB 调试器无法识别在远程机器上编译的可执行符号

我正在 Xcode/clang 环境中的一台计算机上构建我的项目,我想在另一个站上的 lldb 调试器下运行它,而无需复制源代码、可执行文件和符号文件。

我已经复制了所有 dSYM 目录,以便 lldb 调试器可以识别我需要的符号并呈现真正的函数(目前我得到了像___lldb_unnamed_function532backtrace 命令一样的函数名称)

我尝试使用命令

settings set target.source_map /source_dir /target_dir
Run Code Online (Sandbox Code Playgroud)

wheretarget_dir代表我放置所有dSYM目录source_dir的路径,代表所有dSYM目录的原始父目录的路径。

不幸的是,除非源代码驻留在/target_dir.

我哪里做错了?

好的,所以我发现当我将 dSYM 目录复制到可执行文件的相同位置时,lldb 设法破译符号。有没有办法“告诉”lldb 到另一个位置?

c debugging macos clang lldb

0
推荐指数
1
解决办法
2881
查看次数

C:分段错误 11 仅在终端中,不在调试器中

我正在编写一个程序,它读取一个文件,一点一点地反转它,并将结果存储在一个新文件中,而不分配大于 1kb 的块。当我在终端中运行它时,它创建文件但不写入文件,而是崩溃并给出分段错误 11。当我尝试使用 lldb 调试它时,整个代码运行没有任何问题。我的终端遵循与 lldb 不同的分配规则吗?我该如何解决这个问题?

我已经用大文件和小文件运行了代码,但即使使用几乎空的 txt 文件,它也会崩溃。我正在使用 lldb-340.4.119 运行 osx 10.10.5

int const CHUNK_SIZE = 1024;
int chunk_index = 0;
int character;
char new_filename[] = "output";

struct Chunk {
  struct Chunk *previous;
  int data[(CHUNK_SIZE-sizeof(struct Chunk*))/sizeof(int)];
};

struct Chunk* memory = (struct Chunk *)malloc(sizeof(struct Chunk));
struct Chunk* temp;

FILE *fp;
fp = fopen(argv[1], "r");

    // read file into memory
character = fgetc(fp);
do {
  memory->data[chunk_index] = character;
  chunk_index++;
  if ( chunk_index*sizeof(int) > CHUNK_SIZE-sizeof(struct Chunk*)){
    chunk_index = 0; …
Run Code Online (Sandbox Code Playgroud)

c debugging terminal lldb

0
推荐指数
1
解决办法
791
查看次数

在 Mac OS Catalina 上调试 Python 分段错误

我正在使用 PySide2 和 scikit-learn 开发一个应用程序。如果我使用单线程,应用程序可以正常工作,但如果我将 sckikit-learn 计算移至工作 QThread(以在处理过程中保持 UI 响应),我会在 Mac OS Catalina 上遇到随机分段错误。同一个程序似乎在 Windows 上运行良好(在 Mac 上,我每次运行该程序时都会遇到分段错误;我在 Windows 上运行该程序至少二十次,但从未崩溃)。我试图遵循此答案中的建议,但我无法在 Catalina 上gdb正常lldb工作。

这就是我得到的lldb

% lldb python
(lldb) target create "python"
Current executable set to 'python' (x86_64).
(lldb) run test.py
error: process exited with status -1 (attach failed (Not allowed to attach to process.  Look in the console messages (Console.app), near the debugserver entries when the attached failed.  The subsystem that denied the …
Run Code Online (Sandbox Code Playgroud)

python gdb segmentation-fault lldb macos-catalina

0
推荐指数
1
解决办法
1143
查看次数