我正在研究一种使用大地图的算法。我正在尝试按照算法和 GDB 进行操作,同时在纸上进行操作以查看哪里出错了。但是随着地图变大,GDB 将其缩写并停止显示我需要的下一个值:
(gdb) p R
$1 = std::map with 140 elements = {[0] = "", [1] = "e", [2] = "", [3] = "", [4] = "", [5] = "", [6] = "", [7] = "", [8] = "a", [9] = "a", [10] = "", [11] = "", [12] = "", [13] = "", [14] = "",
[15] = "", [16] = "a", [17] = "b", [18] = "", [19] = "", [20] = "", [21] = "", [22] = "b", [23] = "", [24] = "", [25] = "a", [26] = "", [27] = "", [28] = "", [29] = "", [30] = "", [31] = "b",
[32] = "", [33] = "a", [34] = "", [35] = "", [36] = "", [37] = "", [38] = "", [39] = "", [40] = "(b|a)", [41] = "e", [42] = "", [43] = "", [44] = "", [45] = "", [46] = "", [47] = "", [48] = "",
[49] = "", [50] = "", [51] = "a*.a", [52] = "", [53] = "", [54] = "", [55] = "", [56] = "", [57] = "", [58] = "", [59] = "", [60] = "", [61] = "", [62] = "", [63] = "", [64] = "", [65] = "a",
[66] = "b", [67] = "", [68] = "", [69] = "", [70] = "", [71] = "", [72] = "b.a*.a", [73] = "", [74] = "a", [75] = "", [76] = "", [77] = "", [78] = "", [79] = "", [80] = "b", [81] = "", [82] = "a",
[83] = "", [84] = "", [85] = "", [86] = "", [87] = "", [88] = "", [89] = "(b|a)", [90] = "e", [91] = "", [92] = "", [93] = "", [94] = "", [95] = "", [96] = "", [97] = "", [98] = "", [99] = ""...}
Run Code Online (Sandbox Code Playgroud)
我尝试使用 p R[100] 访问元素,但 GDB 不理解此语法:
(gdb) p R[100]
Attempt to take address of value not located in memory.
Run Code Online (Sandbox Code Playgroud)
我听说 GDB 使用 Python 脚本的漂亮打印机来通过命令打印进行漂亮的显示,但是我不确定在打印 std::map 时究竟是哪个漂亮的打印机,我不确定如何修改它。此外,我真的不知道 STL 容器中的内存是如何处理的(我还没有研究分配器和其他东西),所以我不确定我是否想进入该代码。
你知道打印所有东西的更简单的方法吗?或者我必须修改漂亮的打印机?(如果是这样,你能给我一个关于修改哪个文件和注册更改的命令的提示吗?)。