gpt4 book ai didi

python - python 在 gdb 调试器中做了什么?

转载 作者:行者123 更新时间:2023-12-05 04:26:36 24 4
gpt4 key购买 nike

我在 gdb 调试器中调试 C++ 程序,并试图访问仅包含 4 个元素的 vector 的第 5 个元素。尝试此错误后出现在屏幕上:

(gdb) list main
1 #include <memory>
2 #include <vector>
3
4 int main(int argc, char *argv[]){
5
6
7 std::vector<int> v_num = {1, 3, 5, 67};
8 std::unique_ptr<std::vector<int>> p(&v_num);
9
10
(gdb) p v_num.at (5)
Python Exception <class 'IndexError'> Vector index "5" should not be >= 4.:
Error while executing Python code.
(gdb)

除了在 gdb 中看到 Python 异常外,我没有。有人可以解释为什么我遇到这样的错误吗? gdb 是否在内部使用 python?

最佳答案

Does gdb uses python internally?

是的,它大量使用 Python 来以多种方式扩展自身,参见 https://sourceware.org/gdb/onlinedocs/gdb/Python.html#Python .

您发现的称为 Python Xmethods,请参阅 https://sourceware.org/gdb/onlinedocs/gdb/Xmethods-In-Python.html . Xmethods 用于替代 C++ 源代码中定义的内联或优化输出方法。 libstdc++ 有许多用于标准容器的 xmethods。您可以使用 info xmethod 命令查看它们。对于 std::vector,我的盒子上定义了 6 个 xmethods:

  libstdc++::vector
size
empty
front
back
at
operator[]

您可以使用 disable xmethod 命令禁用所有 xmethod。如果这样做,GDB 将无法调用 at 方法:

(gdb) p v_num.at (5)
Cannot evaluate function -- may be inlined

关于python - python 在 gdb 调试器中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73025746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com