没一个有用的,浪费时间

我真的太想用vscode了帮帮我吧,都酬金到150了。。

我已经被恶心一天了,一开始我以为电脑出啥毛病,我重装了系统,但是没用还是这样

img

我的编译器是i686的可以看vector但是我监视里面输入一个对vector中一个具体位置他就不能看了,我不确定是否有人回复,但是我保证如果您能帮到我解决这一个调式的问题,至少我可以出三四十吧,不够再加
问题更新:
我换了一个最新版本的i686编译器还是相同问题

img

如果我此时按下回车键就会报错

img

额怕你看不到再发一遍 建议手动用 gdb 测试来测试是否是 vscode 的问题

这个是插件ms-vscode.cpptools支持不好,这个插件含有闭源代码。vs code里的调试功能没有vs那么好。
交流这样的问题不需要花钱,把钱留着,按不满意结帖。

插件有问题可以到官方提issue:

https://github.com/microsoft/vscode-cpptools/issues/9244

版本: ms-vscode.cpptools v1.10.0

如果是编译时定义的vector,能watch单个成员,比如v[0]

img

如果是运行时添加的,如果使用了成员,也能watch单个成员。注意有注释和没有注释行的区别。

编辑:现在注释行不开启,也能正常添加观察 vector,和它的元素。

int main()
{
    vector<int> v;
    for (int i = 0; i!= 5; i++)
    {
        v.push_back(i+11);
    }
    // cout << v.size() << endl; 
    return 0;
}

img


img

1.换一下编码格式
2.重新装一下MinGW
3.重新装一下VScode
4.实在不行就用Clion吧

添加监视的时候,监视变量用下面的方法试试:

*(&num[1])
或者
*(&num[0]+1)

出现这个问题是由于版本和操作系统不兼容,看你们之前发的信息,同样的代码运行效果都不一样。给你个方向。

从官网上下载你本机操作系统对应的vscode编译器。

另外参考一下这个文档,忘有帮助。也是调试的
https://blog.csdn.net/qq1096425930/article/details/123429474

比较下这篇部署文章,我参考这个部署是OK的:

https://www.cnblogs.com/RioTian/p/13812319.html

程式前沿
帮助程式设计师解决问题,增加专业技能,提升个人能力与未来世界竞争力。

程式语言前端开发IOS开发Android 开发云端运算人工智慧伺服器搜寻资料库软体开发工具
在VS Code中开启gdb的pretty-printer功能
2018.08.07程式语言c , linux , vs巨集vs版本, vs网站开发,反编译vs ,反编译工具vs ,命令视窗vs ,程式设计NO IMAGE
HOME程式语言在VS Code中开启gdb的pretty-printer功能

Advertisement
目录
1.VS Code中开启GDB的pretty-printer功能
1.1.准备pretty-printer
1.1.1.pretty-printer是干什么的
1.1.2.安装pretty-printer
1.1.3.其他
1.2.在VS Code中自动开启pretty-printer
VS Code中开启GDB的pretty-printer功能
准备pretty-printer
pretty-printer是干什么的
众所周知,C 的STL容器的实现并不直观,直接使用gdb之类的debugger检视记忆体是需要周转多次才能看到具体的内容的。
在Visual Studio之类的IDE中内建了一些指令码,用来较为友好的显示容器内的元素。

GDB的pretty-printer指令码提供了类似的功能。

举个例子:
假设我们有如下c 程式码

std::vector vec{1,2,3,4};
std::string s="this is my string.";
在关闭和开启pretty-printer的情况下,我们使用GDB检视vec和s的时候看到的会是诸如下面这样的输出。在前面关闭prety-printer时,现实的是它们的具体实现中用到的成员变数,而开启之后显示的是具体的内容。

(gdb) disable pretty-printer
163 printers disabled
0 of 163 printers enabled
(gdb) p vec
$1 = {<std::_Vector_base<int, std::allocator >> = {
_M_impl = {<std::allocator> = {<__gnu_cxx::new_allocator> = {}, }, _M_start = 0x615c20, _M_finish = 0x615c30,
_M_end_of_storage = 0x615c30}}, }
(gdb) p s
$2 = {static npos = 18446744073709551615,
_M_dataplus = {<std::allocator> = {<__gnu_cxx::new_allocator> = {}, }, _M_p = 0x615c40 "this is my string."},
_M_string_length = 18, {
_M_local_buf = "\022\000\000\000\000\000\000\000-\031@\000\000\000\000",
_M_allocated_capacity = 18}}
(gdb) enable pretty-printer
163 printers enabled
325 of 325 printers enabled
(gdb) p vec
$3 = std::vector of length 4, capacity 4 = {1, 2, 3, 4}
(gdb) p s
$4 = "this is my string."
安装pretty-printer
很遗憾虽然pretty-printer是GDB官方提供的,但是并没有预设安装/开启。所以需要手动安装。
需要注意的是,这个指令码是使用python开发的,所以需要7.0及以后的版本的GDB。

可以很方便的通过gcc官网下载:
https://gcc.gnu.org/svn/gcc/trunk/libstdc -v3/python/。
然后配置.gdbinit档案,开启它。

官网并没有自动打包,所以直接下载需要下载很多档案,推荐使用svn下载,或者解压我打包好的这个档案。
https://pan.baidu.com/s/11mWDYO60CsSNt8hcz66zOw

推荐将下载好的档案放在~/.gdb 目录下,如果没有可以自行建立。

使用svn下載的方法示例(前提是已經安裝了svn)

mkdir ~/.gdb
cd ~/.gdb
svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc -v3/python stlprettyprinter
.gdbinit档案的配置也很简单(它要放在home目录下,如果没有配置过gdb那么很可能需要自己建立):
其中“/home/xxx/”为当前使用者的home目录。

python
import sys
sys.path.insert(0, '/home/xxx/.gdb/stlprettyprinter')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
配置成功之后,它就是预设开启的了,不需要再像我在演示中那样在GDB中使用enable/disable pretty-printer命令控制。

其他
早期的pretty-printer指令码不支援Python 3.0,但是现在已经没有这个问题了,无论你配置的预设python版本是什么,它都可以正常执行。
所以不要按照你在网上搜到的旧文章的指导去修改它。

在VS Code中自动开启pretty-printer
VS Code的Variables视窗预设显示的是记忆体映像,即使你的GDB已经开启了pretty-printer。

此时如果pretty-printer配置正常,在VS Code的debug console中输入-exec print vec命令是可以看到处理后的输出的。

在VS Code的debug console中输入-exec -enable-pretty-printing命令,可以临时开启pretty-printer,但是下次除错的时候需要重新输入。

使用VS Code的launch.json的setupCommands,可以自动执行这句指令。在MIMode的同一级新增一个setupCommands。它可能是第一级的(和name在同一级),也可能是在特定平台的配置下(一般为linux下)。

"setupCommands": [
{ "text": "-enable-pretty-printing", "description": "enable pretty printing", "ignoreFailures": true }
]
注意:在VS Code中,这个配置的名字叫做pretty-printing,而不是pretty-printer。

Configuring launch.json for C/C debugging:https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md
一个相关的issue:
https://github.com/Microsoft/vscode-cpptools/issues/69

不要依赖调试器输出复杂数据结构!而要将复杂数据结构的整个内容在处理它的每一步使用一小段代码按自己很容易理解的格式输出,非常有助于调试!或者可以说是“基础设施”

数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

十字链表交换任意两个节点C源代码(C指针应用终极挑战) http://download.csdn.net/detail/zhao4zhong1/5532495

题主解决了吗,我也遇到同样的问题,解决了麻烦分享一下,谢谢啦

这个很简单,可以帮你看看

看到题主说要放弃了,建议不要放弃,但是可以过几天再看,我以前也经常碰到这样的问题,有的时候真的想解决解决不了,然后突然隔段时间就解决了,可能是现在脑子比较乱,等你下意识里面没有这个东西的时候,在一步步思考,一步步调试,或许就能解决

img


gcc下使用答主贴出的代码运行没有问题,也可以使用gdb打印和查看任意一个的值。答主要不试下换个编译器吧。

安装32位MinGW

https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/dwarf/i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z/download

你把代码发我一份看看

em,告诉楼主一个残酷的事实,vscode的调试功能是不能看vector的(至少我不会(逃