Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 奇怪的错误是我';我从未在c+中遇到过+;以前,有人知道这是什么意思吗?_C++_G++ - Fatal编程技术网

C++ 奇怪的错误是我';我从未在c+中遇到过+;以前,有人知道这是什么意思吗?

C++ 奇怪的错误是我';我从未在c+中遇到过+;以前,有人知道这是什么意思吗?,c++,g++,C++,G++,我不会发布任何代码,因为有太多可能是相关的。但当我运行程序时,它会打印出来 Internal Bad Op Name! : Success 有人知道那是什么意思吗?我用g++来编译我的代码,而在我的代码中,没有任何地方能做到像这样的事情。我不知道它是从哪里来的。还有,有没有关于找出它从代码中的什么地方来的建议,也许是用gdb来实现的 谢谢 这不是我看到的消息,谷歌搜索也没有显示任何明显的相关信息 您可以通过使用gdb单步执行程序,直到消息出现,来确定它来自何处。或者,可以撒一些定时延迟、“我在

我不会发布任何代码,因为有太多可能是相关的。但当我运行程序时,它会打印出来

Internal Bad Op Name!
: Success
有人知道那是什么意思吗?我用g++来编译我的代码,而在我的代码中,没有任何地方能做到像这样的事情。我不知道它是从哪里来的。还有,有没有关于找出它从代码中的什么地方来的建议,也许是用gdb来实现的


谢谢

这不是我看到的消息,谷歌搜索也没有显示任何明显的相关信息

您可以通过使用gdb单步执行程序,直到消息出现,来确定它来自何处。或者,可以撒一些定时延迟、“我在这里”语句或输入提示来发现逻辑的可疑部分


<(编辑)>>>

要使用
gdb
,首先确保编译并链接调试符号。使用gcc或g++,只需将
-g
添加到命令行。消除任何编译器优化通常也很有帮助,因为这些优化有时会使单步执行程序变得不直观

[wally@lf ~]$ gdb program
GNU gdb Fedora (6.8-32.fc10)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) break main
Breakpoint 1 at 0x8048c3c: file rtpsim.cpp, line 30.
(gdb) run
Starting program: ~/program 

Breakpoint 1, main () at rtpsim.cpp:30
30      rtp_io (&obj, INIT_CYCLE);
(gdb) next
31      printf ("- - - - - init complete - - - - -\n");
(gdb)     <---- pressed "enter" to repeat last command
- - - - - init complete - - - - -
33      for (int j = 0;  j < 10;  ++j)
(gdb) 
35          sleep (1);
(gdb) 
36          rtp_io (&obj, SCAN_CYCLE);
(gdb) 
37          printf ("- - - - - scan %d complete - - - - -\n", j+1);
  ...
[wally@lf~]$gdb程序
GNU gdb软呢帽(6.8-32.fc10)
版权所有(C)2008免费软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
这是自由软件:您可以自由更改和重新发布它。
在法律允许的范围内,不存在任何担保。键入“显示复制”
和“显示保修”了解详细信息。
此GDB配置为“i386 redhat linux gnu”。。。
(gdb)主断路器
0x8048c3c处的断点1:文件rtpsim.cpp,第30行。
(gdb)运行
正在启动程序:~/program
rtpsim.cpp处的断点1,main():30
30 rtp_io(和obj,初始循环);
(gdb)下一步
31 printf(“----init complete-\n”);

(gdb)这不是我看到的消息,谷歌搜索也没有显示任何明显的相关信息

您可以通过使用gdb单步执行程序,直到消息出现,来确定它来自何处。或者,可以撒一些定时延迟、“我在这里”语句或输入提示来发现逻辑的可疑部分


<(编辑)>>>

要使用
gdb
,首先确保编译并链接调试符号。使用gcc或g++,只需将
-g
添加到命令行。消除任何编译器优化通常也很有帮助,因为这些优化有时会使单步执行程序变得不直观

[wally@lf ~]$ gdb program
GNU gdb Fedora (6.8-32.fc10)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) break main
Breakpoint 1 at 0x8048c3c: file rtpsim.cpp, line 30.
(gdb) run
Starting program: ~/program 

Breakpoint 1, main () at rtpsim.cpp:30
30      rtp_io (&obj, INIT_CYCLE);
(gdb) next
31      printf ("- - - - - init complete - - - - -\n");
(gdb)     <---- pressed "enter" to repeat last command
- - - - - init complete - - - - -
33      for (int j = 0;  j < 10;  ++j)
(gdb) 
35          sleep (1);
(gdb) 
36          rtp_io (&obj, SCAN_CYCLE);
(gdb) 
37          printf ("- - - - - scan %d complete - - - - -\n", j+1);
  ...
[wally@lf~]$gdb程序
GNU gdb软呢帽(6.8-32.fc10)
版权所有(C)2008免费软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
这是自由软件:您可以自由更改和重新发布它。
在法律允许的范围内,不存在任何担保。键入“显示复制”
和“显示保修”了解详细信息。
此GDB配置为“i386 redhat linux gnu”。。。
(gdb)主断路器
0x8048c3c处的断点1:文件rtpsim.cpp,第30行。
(gdb)运行
正在启动程序:~/program
rtpsim.cpp处的断点1,main():30
30 rtp_io(和obj,初始循环);
(gdb)下一步
31 printf(“----init complete-\n”);

(gdb)您使用的是什么库和什么平台?我知道的(当然不是GCC)没有C++编译器将输出引入到程序中,除非在中止之前。
编辑:可能比回溯或查找引用更容易,使用
grep-a
在所有源代码和库二进制文件中查找该字符串。

您使用的是什么库和什么平台?我知道的(当然不是GCC)没有C++编译器将输出引入到程序中,除非在中止之前。
编辑:可能比回溯或查找引用更容易,使用
grep-a
在所有源代码和库二进制文件中查找该字符串。

要使用GDB调试程序,首先确保使用
-g
标志编译该程序。然后在命令行中键入程序名。GDB是一个基于命令的调试器。要开始,请键入
help
。或者,还有一些图形化的调试工具,比如xxgdb(尽管对于这一点,理解基本的gdb命令是件好事)、ddd、kdbg(基于KDE)、Eclipse(如果您想使用自己的makefile,配置起来不是很简单)等等。

要用gdb调试程序,首先确保它是用
-g
标志编译的。然后在命令行中键入程序名。GDB是一个基于命令的调试器。要开始,请键入
help
。或者,还有一些图形化的调试工具,比如xxgdb(尽管在这方面,理解基本的gdb命令是件好事)、ddd、kdbg(基于KDE的)、Eclipse(如果你想使用自己的makefile,配置起来不是很简单)等等。

我知道,这很奇怪,谷歌也没有为我找到任何东西。如何使用gdb单步执行程序?我添加了一个单步执行gdb的示例。使用
next
执行语句(并跳过对函数的调用),使用
step
进入函数。非常感谢,我找到了导致问题的那一行。我知道,这很奇怪,谷歌也没有为我找到任何东西。如何使用gdb单步执行程序?我添加了一个单步执行gdb的示例。使用
next
执行语句(并跳过对函数的调用),使用
step
进入函数。非常感谢,我找到了导致问题的那一行。我正在使用ubuntu 9.10。gcc版本4.4.1。我还使用flex和bison生成了一些C。任何图书馆都是标准的C或C++库,没有什么不寻常的。@ SimaLy:嗯,这听起来像是Flex或ByEY可能打印,但是缺少谷歌的点击使我更怀疑你的Flex/BySon源。你把它们弄脏了吗?我没有。但我不确定源代码存储在哪里。你说过flex和bison会为你生成代码。格雷普,这可能会有帮助,我正在