gpt4 book ai didi

c++ - GDB 和 NS2 : how to stop program at some Function call

转载 作者:行者123 更新时间:2023-11-28 07:45:22 24 4
gpt4 key购买 nike

我正在使用 gdb 调试 NS-2,这是一个网络协议(protocol)模拟器。它需要一个 .tcl 文件作为输入并解释它。 [我认为它是一个解释器。]

一些代码是用 tcl 编写的(事件和网络组件的创建),一些是用 C++ 编写的(尤其是数据包格式、代理等)。

我在 C++ 中创建了一个 Agent,我想在某个函数调用时停止它,以便我可以查看堆栈跟踪并找到在它之前调用了哪些其他类。

这是我所做的:

我的 MyAgent::function 之一出现了一些错误,它给出了 Segmentation Fault 并且 gdb 自动停止在那里。然后我可以看到堆栈跟踪。我纠正了错误。

现在当我运行的时候

   gdb ./ns
b MyAgent::function()
/*
When i press TAB after writing "b MyA" it gives me all functions
of my class :). when i press enter after above command --
it asks me "Breakpoint on future shared library load" and i say Yes.
I hope this is ok ??
*/
r myfiles/myWireless.tcl

现在它运行并且不会在任何地方停止。 :(

我确定正在调用此函数,因为当发生段错误时,它会在该函数处停止。

谢谢

最佳答案

您可以在该函数中添加一个断点:

(gdb) break MyAgent::function()

您必须确保使用获得调试符号所需的任何选项进行编译。在 GCC 上,使用 -g-ggdb 选项。

关于c++ - GDB 和 NS2 : how to stop program at some Function call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14997275/

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