草庐IT

DEBUGGING

全部标签

c++ - 批评我的非侵入式堆调试器

这是昨天Critiquemyheapdebugger的后续。正如bitc所建议的,我现在将有关已分配block的元数据保存在单独的手写哈希表中。堆调试器现在检测到以下类型的错误:内存泄漏(现在有更详细的调试输出)传递给delete的非法指针(也负责双重删除)错误的删除形式(数组与非数组)缓冲区溢出缓冲区下溢欢迎讨论,提前致谢!#include#include#include#includenamespace{//Idon'twantto#includeforasinglefunctiontemplate:)templatevoidmy_swap(T&x,T&y){Tz(x);x=y;y

c++ - 为什么使用 clang 的 2 阶段命令行构建不会生成 dSYM 目录?

我有一个要调试的简单项目,想要生成带有调试符号的dSYM文件夹。运行:clang++-std=c++14-stdlib=libc++-g-oLazyLazy.cpp按照我的预期创建Lazy.dSYM。但是:clang++-std=c++14-stdlib=libc++-g-cLazy.cppclang++-stdlib=libc++-g-oLazyLazy.o不创建Lazy.dSYM(似乎符号嵌入在二进制文件中)。遗憾的是,两步构建是我修改后的makefile所做的。如何从2阶段编译和链接构建生成Lazy.dSYM?我不需要dSYM目录,只是调试符号,但想了解创建它的时间和原因。

c++ - 为什么使用 clang 的 2 阶段命令行构建不会生成 dSYM 目录?

我有一个要调试的简单项目,想要生成带有调试符号的dSYM文件夹。运行:clang++-std=c++14-stdlib=libc++-g-oLazyLazy.cpp按照我的预期创建Lazy.dSYM。但是:clang++-std=c++14-stdlib=libc++-g-cLazy.cppclang++-stdlib=libc++-g-oLazyLazy.o不创建Lazy.dSYM(似乎符号嵌入在二进制文件中)。遗憾的是,两步构建是我修改后的makefile所做的。如何从2阶段编译和链接构建生成Lazy.dSYM?我不需要dSYM目录,只是调试符号,但想了解创建它的时间和原因。

c++ - Linux C++ 调试器

我正在寻找完美的LinuxC++调试器。我不希望成功,但搜索应该会提供信息。我是一个非常有能力的gdb用户,但STL和Boost很容易毁掉我的调试技能。并不是我无法深入了解数据结构的内部,而是我通常需要很长时间才能找到另一种方法(“如有疑问,请打印出来”)。gdb的宏语言很奇怪,适应性不太好。只需查看stanfordgdbutils打印出STL结构的代码即可。简而言之,我对自己拥有的东西不满意。我最近偶然发现了ZeroBugs.它看起来像一颗银弹。现在的零漏洞用户怎么看?有没有人找到其他解决LinuxC++调试器问题的好方法? 最佳答案

c++ - Linux C++ 调试器

我正在寻找完美的LinuxC++调试器。我不希望成功,但搜索应该会提供信息。我是一个非常有能力的gdb用户,但STL和Boost很容易毁掉我的调试技能。并不是我无法深入了解数据结构的内部,而是我通常需要很长时间才能找到另一种方法(“如有疑问,请打印出来”)。gdb的宏语言很奇怪,适应性不太好。只需查看stanfordgdbutils打印出STL结构的代码即可。简而言之,我对自己拥有的东西不满意。我最近偶然发现了ZeroBugs.它看起来像一颗银弹。现在的零漏洞用户怎么看?有没有人找到其他解决LinuxC++调试器问题的好方法? 最佳答案

c++ - 当程序在调试时正确运行但不是?

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicate:Commonreasonsforbugsinreleaseversionnotpresentindebugmode有时我遇到这样奇怪的情况,程序在正常运行时运行不正确,它会弹出终止对话框,但在调试时正确。当我想使用调试器查找代码中的错误时,这确实让我感到沮丧.你有没有遇到过这种情况,为什么?更新:为了证明有逻辑原因会导致这种令人沮丧的情况:我认为一个很大的可能性是堆访问权限。我曾经写过一个分配一个小缓冲区的函数,但后来我走出了边界。它将在gdb、cdb等中正确运行(我不知道为什么,但它确实运行正确);但是在正

c++ - 当程序在调试时正确运行但不是?

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicate:Commonreasonsforbugsinreleaseversionnotpresentindebugmode有时我遇到这样奇怪的情况,程序在正常运行时运行不正确,它会弹出终止对话框,但在调试时正确。当我想使用调试器查找代码中的错误时,这确实让我感到沮丧.你有没有遇到过这种情况,为什么?更新:为了证明有逻辑原因会导致这种令人沮丧的情况:我认为一个很大的可能性是堆访问权限。我曾经写过一个分配一个小缓冲区的函数,但后来我走出了边界。它将在gdb、cdb等中正确运行(我不知道为什么,但它确实运行正确);但是在正

c++ - 隔离堆栈粉碎错误的工具

委婉地说,我有一个小的内存问题,并且正在用完工具和想法来找出原因。我有一个高度多线程(pthreads)的C/C++程序,它在4.4.4之后和4.7.1之前的GCC优化编译下开发了堆栈粉碎问题。症状是在创建其中一个线程期间,我得到了一个完整的堆栈粉碎,不仅仅是%RIP,而且所有父帧和大多数寄存器都是0x00或其他无意义的地址。哪个线程导致问题似乎是随机的,但是从日志消息来看,它似乎与相同的代码块隔离,并且似乎在创建新线程时出现了半可重复的点。这使得捕获和隔离有问题的代码变得非常困难,而不是一个可能有数千行的编译单元,因为到目前为止,在有问题的文件中的print()在试图缩小范围时被证明

c++ - 隔离堆栈粉碎错误的工具

委婉地说,我有一个小的内存问题,并且正在用完工具和想法来找出原因。我有一个高度多线程(pthreads)的C/C++程序,它在4.4.4之后和4.7.1之前的GCC优化编译下开发了堆栈粉碎问题。症状是在创建其中一个线程期间,我得到了一个完整的堆栈粉碎,不仅仅是%RIP,而且所有父帧和大多数寄存器都是0x00或其他无意义的地址。哪个线程导致问题似乎是随机的,但是从日志消息来看,它似乎与相同的代码块隔离,并且似乎在创建新线程时出现了半可重复的点。这使得捕获和隔离有问题的代码变得非常困难,而不是一个可能有数千行的编译单元,因为到目前为止,在有问题的文件中的print()在试图缩小范围时被证明

c++ - CLion:通过添加源文件启用外部库的调试

我正在使用CLion2016.2.2,我想调试libtins中的方法图书馆。但是,看起来源不可用,因为当尝试从libtins跳转到方法时,调试器不会进入,而只是更新当前View。我尝试按照thispost中的建议进行操作通过添加include_directories("/home/patrick/libtins/")或include_directories("/home/patrick/libtins/src/")而libtins是克隆的根文件夹来自libtins存储库。但是CLion仍然找不到与libtins库关联的源文件。我的CMake文件如下所示:project(myprojec