1

我在我的 Mac 上使用支持 c++ 11 功能的 g++ 4.8。

/opt/local/bin/g++-mp-4.8

我也使用 gdb 6.3.50。

GNU gdb 6.3.50-20050815 (Apple version gdb-1822) (Sun Aug  5 03:00:42 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".

我的代码有很多具有 unique_ptr 的地图或矢量,调试它们真的很痛苦,因为我看不到有关地图或矢量中元素的信息。

我试图制作一个实用方法并在 gdb 中调用它们,但它似乎不起作用。它不会引发错误消息,但也不会显示任何内容。

void testPrint( map<int, unique_ptr<GroupContextSummary>> & m, int i )
{
    cout <<  m[i].get()->to_string() << endl;
}

有什么方法可以查看地图/矢量中的元素?

在此处输入图像描述

4

2 回答 2

0

这篇文章有一些暗示 gdb 7 可能会解决这个问题。

MacOSX 上的 Gdb 狮子

brew install https://raw.github.com/Homebrew/homebrew-dupes/master/gdb.rb

然后我需要协同设计。

==> ./configure --prefix=/usr/local/Cellar/gdb/7.6 --with-python=/usr --with-system-readline
==> make
==> make install
==> Caveats
gdb requires special privileges to access Mach ports.
You will need to codesign the binary. For instructions, see:

  http://sourceware.org/gdb/wiki/BuildingOnDarwin

或者你可以从 sudo 运行 gdb。

Gdb 7.0 可以在我的 Mac 上编译和构建,但它不能正确调试程序。我希望 Mac 上的下一个版本的 gdb 能够解决这些问题。

于 2013-06-20T12:36:10.783 回答
0

我可以在不使用 gdb 7 的情况下调试地图和矢量,但使用漂亮的打印机设置。

这个站点(http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF)有程序。简而言之。

  1. 将 .gdbinit 复制到 ~/
  2. 重启gdb
  3. 用于pvector打印矢量。

请参考此页面:https ://stackoverflow.com/a/17246292/260127 此页面:如何在 Mac OS X 上使用 gdb 打印出 vector<unique_ptr> 中的内容

于 2013-06-22T01:15:11.747 回答