我正在尝试尽可能多地收集有关在 Mac OS 10.11.1 'El Capitan' 上使用 Valgrind 3.11.0 时看到的明显无限循环问题的信息。
当我valgrind
在 LLDB 中运行我的程序或附加到valgrind
运行我的程序然后停止该进程时,我得到如下回溯:
* 线程 #1:tid = 0x24ab4, 0x000000010805920b,停止原因 = 信号 SIGSTOP * 帧#0:0x000000010805920b 帧#1:0x0000000108040dda 帧#2:0x00000001080b6790 帧#3:0x00000001080b2fd3 帧#4:0x00000001080b7c25 帧#5:0x00000001080b6113 帧#6:0x00000001080b3cd0 第 7 帧:0x00000001080c54d9
如何判断这些框架对应于哪些对象?
我尝试vmmap
了这个过程,但它没有显示任何信息。特别是,“进程的不可写区域”部分通常会显示 dylib 映射到进程内存的地址范围是空白的:
$ vmmap -v 21729 进程:memcheck-amd64-darwin [21729] 路径:/usr/local/Cellar/valgrind/3.11.0/lib/valgrind/memcheck-amd64-darwin 加载地址:0x100000000 标识符:memcheck-amd64-darwin 版本: ??? 代码类型:X86-64 父进程:bash [11895] 日期/时间:2015-11-30 11:52:16.392 -0500 发布时间:2015-11-30 11:51:53.557 -0500 操作系统版本:Mac OS X 10.11.1 (15B42) 报告版本:7 分析工具:/Applications/Xcode.app/Contents/Developer/usr/bin/vmmap 分析工具版本:Xcode 7.1.1 (7B1005) ---- 进程 21729 的虚拟内存映射 (memcheck-amd64-darwin) 输出报告格式:2.4——64位进程 虚拟机页面大小:4096 字节 ==== 进程 21729 的不可写区域 区域类型开始 - 结束 [ VSIZE RSDNT DIRTY SWAP] PRT/MAX SHRMOD 清除区域详细信息 ==== 进程 21729 的可写区域 区域类型开始 - 结束 [ VSIZE RSDNT DIRTY SWAP] PRT/MAX SHRMOD 清除区域详细信息 ==== 图例 SM=共享模式: COW=copy_on_write PRV=private NUL=empty ALI=aliased SHM=shared ZER=zero_filled S/A=shared_alias PURGE=可吹扫模式: V=volatile N=nonvolatile E=empty 否则不可清除 ==== 进程 21729 的摘要 (无效的)