草庐IT

c++ - 在具有 'gdb' 的函数内的特定行中设置断点

我正在尝试使用“gdb”在类(我创建的类)的成员函数内的第五行设置断点。来自here我了解如何在函数的开始处设置断点,但我想将其设置在函数内的特定行或特定从这个函数的开头偏移。一般来说,'gdb'中是否有一种方法可以通过设置与我已有的另一个断点的偏移量来为行设置断点?谢谢! 最佳答案 您可以使用gdbbreakpoint+在当前停止位置的偏移处创建断点.您还可以使用gdbbreak在特定行号上创建断点(对于当前源文件)或gdbbreak:(对于当前文件以外的文件)。更多详情见docs.

c++ - GDB:如何在调试期间检查当前行号

在使用GDB进行调试时,如何检查当前停止的行号?我原以为这很明显(也许确实如此),但我在GDBCheatSheet上看不到它。. 最佳答案 一些挖掘发现了以下方法:frame:这个命令正是我想要的。输出如下:(gdb)frame#0MyDialog::on_saveButton_clicked(this=0x72bf9e0)atsrc/ui/dialog/MyDialog.cxx:8686_item->save();(gdb)where或bt(效果相同):这会打印出调用堆栈,在当前行结束。list*$pc:这不会告诉您确切的行,但会

c++ - GDB:如何在调试期间检查当前行号

在使用GDB进行调试时,如何检查当前停止的行号?我原以为这很明显(也许确实如此),但我在GDBCheatSheet上看不到它。. 最佳答案 一些挖掘发现了以下方法:frame:这个命令正是我想要的。输出如下:(gdb)frame#0MyDialog::on_saveButton_clicked(this=0x72bf9e0)atsrc/ui/dialog/MyDialog.cxx:8686_item->save();(gdb)where或bt(效果相同):这会打印出调用堆栈,在当前行结束。list*$pc:这不会告诉您确切的行,但会

c++ - 在 Linux 上断言失败后继续调试?

当在Windows上使用VisualC++的断言失败时,调试器会停止,显示消息,然后让您继续(或者,如果没有正在运行的调试session,则提供为您启动VisualStudio)。在Linux上,assert()的默认行为似乎是显示错误并退出程序。由于我所有的断言都通过宏,我尝试使用信号来解决这个问题,比如#defineASSERT(TEST)if(!(TEST))raise(SIGSTOP);但是虽然GDB(通过KDevelop)停在正确的点,我似乎无法继续越过信号,并且在GDB中手动发送信号只会让我挂起,既不能控制GDB,也不能控制调试的进程。 最佳答案

c++ - 在 Linux 上断言失败后继续调试?

当在Windows上使用VisualC++的断言失败时,调试器会停止,显示消息,然后让您继续(或者,如果没有正在运行的调试session,则提供为您启动VisualStudio)。在Linux上,assert()的默认行为似乎是显示错误并退出程序。由于我所有的断言都通过宏,我尝试使用信号来解决这个问题,比如#defineASSERT(TEST)if(!(TEST))raise(SIGSTOP);但是虽然GDB(通过KDevelop)停在正确的点,我似乎无法继续越过信号,并且在GDB中手动发送信号只会让我挂起,既不能控制GDB,也不能控制调试的进程。 最佳答案

c++ - 你如何使用gdb?

我决定了解我们的C/C+*nix实践者如何使用gdb调试器。这是我通常使用的:b-breakfilename.c:line#,function,filename.cpp:function,className::Membern,c,s--下一步继续gdb程序名=>设置断点==>运行[参数列表](我这样做是为了在程序启动前设置断点)l-列出周围的源代码。附加进程ID6休息[地点]gdbprogramNamecorefile.core(检查应用崩溃的原因)我有时也会在退出函数(breakexit)处设置断点来检查程序堆栈infob检查所有断点清除[断点列表]你如何使用它?

c++ - 你如何使用gdb?

我决定了解我们的C/C+*nix实践者如何使用gdb调试器。这是我通常使用的:b-breakfilename.c:line#,function,filename.cpp:function,className::Membern,c,s--下一步继续gdb程序名=>设置断点==>运行[参数列表](我这样做是为了在程序启动前设置断点)l-列出周围的源代码。附加进程ID6休息[地点]gdbprogramNamecorefile.core(检查应用崩溃的原因)我有时也会在退出函数(breakexit)处设置断点来检查程序堆栈infob检查所有断点清除[断点列表]你如何使用它?

c++ - gdb - 列出当前函数的源而不输入其名称

在GDB中,命令:listfunction将列出该函数的所有源代码。是否有一个命令可以列出您当前所在函数的所有源代码,而无需您手动输入函数名称? 最佳答案 (gdb)helplistListspecifiedfunctionorline.Withnoargument,liststenmorelinesafteroraroundpreviouslisting."list-"liststhetenlinesbeforeapreviousten-linelisting.Oneargumentspecifiesaline,andtenlin

c++ - gdb - 列出当前函数的源而不输入其名称

在GDB中,命令:listfunction将列出该函数的所有源代码。是否有一个命令可以列出您当前所在函数的所有源代码,而无需您手动输入函数名称? 最佳答案 (gdb)helplistListspecifiedfunctionorline.Withnoargument,liststenmorelinesafteroraroundpreviouslisting."list-"liststhetenlinesbeforeapreviousten-linelisting.Oneargumentspecifiesaline,andtenlin

c++ - 从 gdb 设置 std::string 变量值?

是否有可能...当调试器在断点处停止时,可以修改std::string变量的值,而无需借助诸如调整当前缓冲区的内存镜像之类的技巧?例如类似“setvarmystring="helloworld"? 最佳答案 试试这个(测试并为我工作):callmystring.assign("helloworld")关键是不是直接修改内存,而是调用对象的函数来改变它的状态。碰巧std::basic_string有一个名为assign的成员函数来完成这项工作。 关于c++-从gdb设置std::strin