我正在尝试收集关于在Mac OS 10.11.1 'El Capitan'上使用Valgrind 3.11.0时看到的明显的无限循环问题的尽可能多的信息。
当我在LLDB中运行valgrind或附加到运行我的程序的valgrind然后停止进程时,我会得到以下类似的回溯:
* 线程#1:tid = 0x24ab4,停止原因=信号SIGSTOP * 帧#0:0x000000010805920b 帧#1:0x0000000108040dda 帧#2:0x00000001080b6790 帧#3:0x00000001080b2fd3 帧#4:0x00000001080b7c25 帧#5:0x00000001080b6113 帧#6:0x00000001080b3cd0 帧#7:0x00000001080c54d9
我该如何确定这些帧对应哪个对象?
我尝试在进程上使用
当我在LLDB中运行valgrind或附加到运行我的程序的valgrind然后停止进程时,我会得到以下类似的回溯:
* 线程#1:tid = 0x24ab4,停止原因=信号SIGSTOP * 帧#0:0x000000010805920b 帧#1:0x0000000108040dda 帧#2:0x00000001080b6790 帧#3:0x00000001080b2fd3 帧#4:0x00000001080b7c25 帧#5:0x00000001080b6113 帧#6:0x00000001080b3cd0 帧#7:0x00000001080c54d9
我该如何确定这些帧对应哪个对象?
我尝试在进程上使用
vmmap
,但它没有显示任何信息。特别是,“进程的非可写区域”部分通常会显示 dylibs 映射到进程内存中的地址范围,但现在为空白:
$ 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位进程 VM页面大小:4096字节
==== 进程21729的不可写区域 REGION TYPE START - END [ VSIZE RSDNT DIRTY SWAP] PRT/MAX SHRMOD PURGE REGION DETAIL
==== 进程21729的可写区域 REGION TYPE START - END [ VSIZE RSDNT DIRTY SWAP] PRT/MAX SHRMOD PURGE REGION DETAIL
==== 图例 SM = 分享模式: COW = 写时复制 PRV = 私有 NUL = 空 ALI = 别名 SHM = 共享 ZER = 零填充 S/A = 共享别名 PURGE = 可清除模式: V = 易失性 N = 非易失性 E = 空,否则是不可清除的
==== 进程21729的摘要 (null)
valgrind
上使用LLDB时,这是可以预料的。 - Daniel Trebbienvalgrind
的内存映射,而不是嵌套的客户端可执行文件)。_那_是可以预料的。当然,这个评论现在已经超过2年了.. - sherrellbc