我在预configuration的环境中从控制台使用GDB,它提供的版本有一些错误。 最烦人的是,有时在进入函数或添加断点或打印调用堆栈时,会喷出数百个与此类似的连续行:
warning: Range for type (null) has invalid bounds 0..-103
我可以find这个问题的唯一参考,这是没有用的。
鉴于上述,我认为这应该是简单的
指示GDB抑制这种警告 – 看起来像死胡同。 据我所知,GDB不允许用户压制这样的警告。
通过控制台应用程序打开具有特定URL的浏览器
Windows控制台的颜色值是否有与之相关的正式名称(常量)?
如何在不使用C中的system()的情况下清除win32 cmd控制台窗口?
通过.gdbinit拦截他们 – 似乎很有希望。 我能够改变terminal的颜色,例如,通过戳穿这个答案中引用的.gdbinit文件。 不幸的是,我找不到任何对我的目的有用的文档 。
过滤警告(也许通过stdout和GDB之间的某种代理) – 感觉hackish,但我不介意这样做,如果它能以某种方式工作。 一个愚蠢的尝试是将stderrredirect到/dev/null如下所示: gdb -p xxxxxx 2> /dev/null ,但看起来好像是警告实际上被推送到stdout。 游民。 然后我也想,也许我可以做一些愚蠢的事情,如通过grep过滤stdout像这样gdb -p xxxxxx | grep -v ^warning gdb -p xxxxxx | grep -v ^warning ,但是这似乎具有使terminal提示因某些原因不可见的副作用。
有没有人有一些想法可以工作? 我search了很多东西,可能会帮助我实现第三个想法,但到目前为止,我空手而出…
如何在控制台应用程序中使用GetMessage()在Windows API中识别C ++中的键盘input?
在另一个java进程的Windows控制台中运行java进程
Py2Exe:避免Windows请求执行.exe文件的权限
首先,gdb无法过滤警告。 警告机制不能从CLI或Python层编程。
升级gdb可能会有帮助,但可能不会。 从我提供的链接中可以看出,这个问题与Fortran可变长度数组(“VLA”)有关。 最后我听说gdb中这个功能还在使用中。 这是值得一试,但我不会指望它。
如果警告不干扰你的工作,你可以简单地破解gdb删除警告。 这应该是相当简单的 – 比下一个想法更简单。
如果你真的想要一个包装来消除警告,或者(1)在emacs中运行gdb,并在某些elisp中破解这些消息; 或者(2)使用expect来包装gdb命令行的东西,会导致警告。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。