小编Hap*_*ude的帖子

是否有适用于Linux的C++ gdb GUI?

简而言之:有没有人知道gdb的GUI会使它与更新版本的Visual C++中的功能集相提并论?

详细说明:作为一个花了很多时间在Windows上编程的人,每当我在Linux中编写C++代码时,我发现的一个更大的绊脚石就是使用命令行gdb调试任何东西需要花费我几倍的时间. Visual Studio,它似乎没有通过练习变得更好.有些事情只是更容易或更快地以图形方式表达.

具体来说,我正在寻找一个GUI:

  • 处理所有基础知识,例如踩到代码,观察变量和断点
  • 理解并可以显示复杂和嵌套的C++数据类型的内容
  • 不会被混淆,并且最好能够在显示相关信息(如参数类型)的同时智能地逐步执行模板化代码和数据结构
  • 可以处理线程应用程序并在不同线程之间切换以单步执行或查看状态
  • 除了在gdb中启动程序之外,还可以处理附加到已启动的进程或读取核心转储

如果这样的程序不存在,那么我想听听人们对于至少满足一些要点的程序的经验.有没有人有任何建议?

编辑:
列出可能性很好,我将采取我能得到的,但如果你可以在你的回答中包含它会更有帮助:
(a)你是否真的使用过这个GUI,如果有的话,你有什么积极/消极的反馈.
(b)如果您知道,上述哪些功能不受支持

列表很容易获得,像这样的网站很棒,因为你可以了解人们的应用程序的个人经验.

c++ linux debugging gdb

208
推荐指数
15
解决办法
10万
查看次数

为什么我不能在C中将'char**'转换为'const char*const*'?

以下代码片段(正确)在C中发出警告,在C++中发出错误(分别使用gcc和g ++,使用版本3.4.5和4.2.1进行测试; MSVC似乎并不关心):

char **a;
const char** b = a;
Run Code Online (Sandbox Code Playgroud)

我能理解并接受这个.
这个问题的C++解决方案是将b更改为const char*const*,它不允许重新分配指针并阻止你绕过const-correctness(C++ FAQ).

char **a;
const char* const* b = a;
Run Code Online (Sandbox Code Playgroud)

但是,在纯C中,更正后的版本(使用const char*const*)仍会发出警告,我不明白为什么.有没有办法绕过这个而不使用演员?

澄清:
1)为什么这会在C中产生警告?它应该完全是const安全的,并且C++编译器似乎认识到它.
2)在说(并让编译器强制执行)我不会修改它指向的字符时,接受这个char**作为参数的正确方法是什么?例如,如果我想写一个函数:

void f(const char* const* in) {
  // Only reads the data from in, does not write to it
}
Run Code Online (Sandbox Code Playgroud)

我想在char**上调用它,参数的正确类型是什么?

编辑:感谢那些做出回应的人,特别是那些提出问题和/或跟进我的回复的人.

我已经接受了这样一个答案,即如果没有演员阵容,我想做的事情是无法完成的,无论是否应该这样做.

c pointers const const-correctness

59
推荐指数
3
解决办法
2万
查看次数

标签 统计

c ×1

c++ ×1

const ×1

const-correctness ×1

debugging ×1

gdb ×1

linux ×1

pointers ×1