我试图调试我的小词法分析器并遇到了这个问题:QtCreator-Debugger 不显示我的 std::string-variable 的任何内容。我尝试在控制台中对其进行调试,但得到了相同的结果,只是简单的结构信息。
我前几天用的那个版本的QtCreator确实显示了字符串的内容。所有其他 STL 元素,如 std::vector、std::map、std::multimap 等显示正确的数据,只是 std::string 类不正确。
经过几个小时的谷歌搜索后,我发现了很多描述 pretty-print 创建的网页,我解决这个问题的非常笨拙的方法并没有帮助。我有什么想法可以摆脱这个错误吗?
注意:字符串变量的“内容”将始终显示为“不可访问”。 我在 64 位 Linux 操作系统上使用 QtCreator 2.6 (QT5)。
编辑(1):我重新安装了从操作系统到编译器和 IDE 的一切...奇怪的是,当我使用优化级别 3 (-O3) 构建我的项目时,QT 可以显示 std::strings。
命令行如下: clang++ -std=c++11 -O3 -g -c foo.cpp
当我删除 -O3 std::strings 时 <不可访问>。有什么想法吗?
不可访问>
最佳答案
您可以尝试修复“/usr/share/qtcreator/debugger/stdtypes.py”。由于他们使用“关于成员位置的硬代码假设”,因此似乎并非在任何地方都有效。 在我的例子中 - Linux x64,gcc 9.1 它的工作原理与你描述的完全一样: string not accessible
所以找到函数def qdumpHelper_std__string(d, value, charType, format):
然后改变
(size, alloc, refcount) = d.split("ppp", data - 3 * d.ptrSize())
到
(size, alloc, refcount) = d.split("ppp", value.address() + d.ptrSize())
另评论 d.check(0 <= size and size <= alloc and alloc <= 100*1000*1000)或将其更改为类似
if size > 1000:
size = 1000
在我的系统上 std::string 有下一个结构
pointer 8 byte
size 8 byte
union 16 byte
还有这个union字段可以根据字符串大小更改其含义。所以我们需要评论 size < alloc查看。
value.address() - 字符串对象的地址,所以 value.address() + d.ptrSize()将指向尺寸,value.address() + 2 * d.ptrSize()指向那个 union ,其中包含 alloc size值,不时。
看看你的std::string类声明,这样您就可以在系统上获得结构。
修复后:
fixed debuger view
两者都有效 - 当“系统 GDB pretty-print ”选中并清除时
关于c++ - QtCreator 调试器不显示 std::string 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13987699/
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'
对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一
使用Ruby1.9.2运行IDE提示说需要gemruby-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall
我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element