草庐IT

c++ - 在没有优化但当前上下文中仍然没有局部变量符号的程序上使用 gdb 进行调试

我一直有这个问题,但似乎总是推迟问这个问题,因为我好像做错了什么......但现在我觉得不是......拿了这个代码:#include#include#includeintmain(intargc,char**argv){if(argc"用命令编译:g++-std=c++11-Wallmain.cpp-omain-O0-ggdb3我使用的是最新的主干版本的gcc,我的主干是在9月23日左右拍摄的……另外请注意,我没有进行优化编译!不管怎样,我现在开始调试,像这样:gdb--quiet--args./mainstring我在第12行设置了一个断点(反向算法)b12然后我运行程序run然后

c++ - gdb:如何在循环执行期间暂停?

我正在使用NetBeans7作为我的IDE,在Windows7的mingw32下用g++编写软件渲染器。我最近一直需要对其进行剖析,而现在我已经完成了对结构的铺设,这种需求已经达到了临界点。我环顾四周,对我来说thisanswer在同时跨平台和保持简单方面表现出最大的希望。这种方法的要点是,可能最基本(在许多方面,最准确)的分析/优化方法是不时地直接对堆栈进行采样,然后停止执行......不幸的是,NetBeans不会暂停。所以我正在尝试找出如何直接使用gdb进行采样。我对gdb了解不多。不过,我可以从手册页中看出,您在运行可执行文件之前设置了断点。这对我没有帮助。有谁知道将gdb(或

c++ - gdb:如何在循环执行期间暂停?

我正在使用NetBeans7作为我的IDE,在Windows7的mingw32下用g++编写软件渲染器。我最近一直需要对其进行剖析,而现在我已经完成了对结构的铺设,这种需求已经达到了临界点。我环顾四周,对我来说thisanswer在同时跨平台和保持简单方面表现出最大的希望。这种方法的要点是,可能最基本(在许多方面,最准确)的分析/优化方法是不时地直接对堆栈进行采样,然后停止执行......不幸的是,NetBeans不会暂停。所以我正在尝试找出如何直接使用gdb进行采样。我对gdb了解不多。不过,我可以从手册页中看出,您在运行可执行文件之前设置了断点。这对我没有帮助。有谁知道将gdb(或

c++ - 如何在 C++ 中查看 <optimized out> 变量的值?

我正在使用gdb调试C++程序。我有这个代码:intx=floor(sqrt(3));我想查看x的值。但是,gdb声称x是“”。如何查看x的值?我应该更改我的编译器标志吗? 最佳答案 在高优化级别上,编译器可以消除中间值,正如您在此处看到的。有多种选择:您可以降低优化级别,使调试器更容易跟踪事物。-O0肯定可以工作(但会慢很多),-O1也可以正常工作。您可以添加一些显式打印语句来记录输出值。您通常也可以强制编译器通过将其设置为volatile来保留此特定值(但请记住在完成后将其取消设置为volatile!)。但是请注意,由于控制流在

c++ - 如何在 C++ 中查看 <optimized out> 变量的值?

我正在使用gdb调试C++程序。我有这个代码:intx=floor(sqrt(3));我想查看x的值。但是,gdb声称x是“”。如何查看x的值?我应该更改我的编译器标志吗? 最佳答案 在高优化级别上,编译器可以消除中间值,正如您在此处看到的。有多种选择:您可以降低优化级别,使调试器更容易跟踪事物。-O0肯定可以工作(但会慢很多),-O1也可以正常工作。您可以添加一些显式打印语句来记录输出值。您通常也可以强制编译器通过将其设置为volatile来保留此特定值(但请记住在完成后将其取消设置为volatile!)。但是请注意,由于控制流在

c++ - 如何使用 cmake 设置 GDB 调试标志?

我尝试使用设置调试标志setcmake中的命令,但我不确定要添加什么。我被告知像DEBUG=true这样的事情,但到目前为止我无法找到要设置的正确标志。 最佳答案 如果你想在编译时进行调试(包括源信息,即-g),请使用cmake-DCMAKE_BUILD_TYPE=Debug如果你想构建一个发布版本,你可以使用cmake-DCMAKE_BUILD_TYPE=RelWithDebInfo 关于c++-如何使用cmake设置GDB调试标志?,我们在StackOverflow上找到一个类似的问

c++ - 如何使用 cmake 设置 GDB 调试标志?

我尝试使用设置调试标志setcmake中的命令,但我不确定要添加什么。我被告知像DEBUG=true这样的事情,但到目前为止我无法找到要设置的正确标志。 最佳答案 如果你想在编译时进行调试(包括源信息,即-g),请使用cmake-DCMAKE_BUILD_TYPE=Debug如果你想构建一个发布版本,你可以使用cmake-DCMAKE_BUILD_TYPE=RelWithDebInfo 关于c++-如何使用cmake设置GDB调试标志?,我们在StackOverflow上找到一个类似的问

c++ - 如何清除gdb命令屏幕?

是否可以清除gdb的命令窗口?我的意思是,gdb中是否有一个命令与bash终端中的clear命令执行相同的操作(对于命令窗口)? 最佳答案 点击Control+L。在Linux和MacOSX以及最新版本的GDB中都适用于我。 关于c++-如何清除gdb命令屏幕?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12938067/

c++ - 如何清除gdb命令屏幕?

是否可以清除gdb的命令窗口?我的意思是,gdb中是否有一个命令与bash终端中的clear命令执行相同的操作(对于命令窗口)? 最佳答案 点击Control+L。在Linux和MacOSX以及最新版本的GDB中都适用于我。 关于c++-如何清除gdb命令屏幕?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12938067/

c - 使用 gdb 将地址转换为行

我有一个由剥离的应用程序生成的堆栈跟踪,如下所示:***Checkfailurestacktrace:***@0x7f0e442d392d(unknown)@0x7f0e442d7b1f(unknown)@0x7f0e442d7067(unknown)@0x7f0e442d801d(unknown)@0x7f0e457c55e6(unknown)@0x7f0e457c5696(unknown)@0x4e8765(unknown)@0x4a8b43(unknown)@0x7f0e43197ced(unknown)@0x4a6889(unknown)我有一个非剥离版本的可执行文件及其所有库