Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何让LLDB打印内存中共享库的位置?_Macos_Debugging_Dynamic Linking_Lldb_Address Space - Fatal编程技术网

Macos 如何让LLDB打印内存中共享库的位置?

Macos 如何让LLDB打印内存中共享库的位置?,macos,debugging,dynamic-linking,lldb,address-space,Macos,Debugging,Dynamic Linking,Lldb,Address Space,在Mac OS 10.11.1“El Capitan”上使用Valgrind 3.11.0时,我试图收集尽可能多的信息 当我在LLDB中对我的程序运行valgrind或连接到运行我的程序的valgrind并停止进程时,我会得到如下回溯: * thread #1: tid = 0x24ab4, 0x000000010805920b, stop reason = signal SIGSTOP * frame #0: 0x000000010805920b frame #1: 0x00000

在Mac OS 10.11.1“El Capitan”上使用Valgrind 3.11.0时,我试图收集尽可能多的信息

当我在LLDB中对我的程序运行
valgrind
或连接到运行我的程序的
valgrind
并停止进程时,我会得到如下回溯:

* thread #1: tid = 0x24ab4, 0x000000010805920b, stop reason = signal SIGSTOP * frame #0: 0x000000010805920b frame #1: 0x0000000108040dda frame #2: 0x00000001080b6790 frame #3: 0x00000001080b2fd3 frame #4: 0x00000001080b7c25 frame #5: 0x00000001080b6113 frame #6: 0x00000001080b3cd0 frame #7: 0x00000001080c54d9 将列出所有库,以及

(lldb) image dump sections
将转储有关所有已加载库的节位置的详细信息

但是,如果lldb能够在帧打印中找出在给定地址映射的库,它就会显示出来(除非您更改了帧格式设置),因此这些命令可能也不会显示更多内容

请注意,valgrind对程序的执行做了一些奇怪的事情,以便发挥其魔力,如果像lldb&vmmap这样的外部工具无法看到潜在的真相,我一点也不会感到惊讶


由于您有一个最新的操作系统和工具,您可以尝试llvm的ASAN而不是valgrind,看看它是否抓住了您的问题。ASAN需要重建,但因为它静态地完成了它的功能,所以运行时看起来与其他工具很正常。

我使用valgrind已经很久了,我完全忘记了调试是如何使用它的

要调试在valgrind下运行的程序,您必须告诉valgrind打开一个gdbserver端口,以便调试器与之对话。Valgrind知道如何撤销它的所有魔法,并假装它正在管理的程序只是一个普通程序

如第3.2节所述:

LLDB还知道如何使用gdb远程协议进行通话,并拥有连接到服务器的命令
gdb remote

这不适用于直接开箱即用的lldb,似乎寄存器定义存在一些问题。似乎valgrind上有一些改进工作:


但无论如何,这就是它的工作原理。

谢谢,这回答了我的问题。不幸的是,尝试这些命令会导致“错误:目标没有关联的可执行映像”,但我认为在
valgrind
@DanielTrebbien上使用LLDB时会出现这种情况,我对这个结果感到惊讶。我在我的机器上尝试了这个方法,效果很好(尽管它列出了
valgrind
的内存映射,而不是嵌套的来宾可执行文件)。这是意料之中的。当然,这个评论已经有两年多的历史了。。
(lldb) image lookup -va <ADDRESS>
(lldb) image list
(lldb) image dump sections