我正在尝试尽可能多地收集有关在 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 的摘要
(无效的)