我不会发布任何代码,因为有太多可能相关的代码。但是当我运行我的程序时,它打印
Internal Bad Op Name!
: Success
任何人都知道这意味着什么?我正在使用g ++来编译我的代码,在我的代码中没有任何地方可以做任何事情甚至远程接近这样的事情。我不知道它来自哪里。此外,任何建议,以确定它来自的代码在哪里,也许使用gdb以某种方式这样做?
谢谢!
答案 0 :(得分:3)
这不是我见过的消息,谷歌搜索没有显示任何明显相关的信息。
您可以通过使用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);
...
答案 1 :(得分:1)
您使用的是哪些库和哪个平台?我知道没有C ++编译器(当然不是GCC)会向你的程序引入输出,除非在中止之前。
编辑:可能比回溯或查找引用更容易,使用grep -a
在所有源代码和库二进制文件中查找该字符串。
答案 2 :(得分:1)
要使用GDB调试程序,首先要确保使用-g
标志编译它。然后在命令行中键入gdb your-program-name
。 GDB是一个基于命令的调试器。要开始使用,请输入help
。或者,有图形化的调试工具,比如xxgdb(虽然为此,理解基本的gdb命令是一件好事),ddd,kdbg(基于KDE),Eclipse(如果你想使用你的话,配置起来不是很简单拥有makefile)等。