出于某种原因,我得到了这个 错误消息,不允许我单步执行代码。
view.wantsLayer
不是逐行逐步,而是逐步完成代码的结束。
我的Makefile
ubuntu (master *) ECS150-Simple-Shell $ gdb sshell
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
Copyright (C) 2016 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 "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from sshell...(no debugging symbols found)...done.
(gdb) b LoadTerminal
Breakpoint 1 at 0x4010e8
(gdb) r
Starting program: /media/ubuntu/folder/sshell
warning: the debug information found in "/lib64/ld-2.23.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).
Breakpoint 1, 0x00000000004010e8 in LoadTerminal ()
(gdb) n
Single stepping until exit from function LoadTerminal,
which has no line number information.
sshell$
我的Makefile在每个目标文件上都带有-g
objects = main.o terminal.o history.o parser.o
cc = gcc
cflags = -g -Werror
sshell: $(objects)
$(cc) $(cflags) $(objects) -o sshell
rm $(objects)
main.o: main.c
terminal.o: terminal.c
history.o: history.c
parser.o: parser.c
.PHONY: clean
clean:
rm sshell
我甚至尝试将-g选项添加到我的目标文件中,但是我得到了同样的错误。
答案 0 :(得分:0)
出于某种原因
有几个可能的原因。我猜测的最可能的原因是你的gcc
不是真正的/usr/bin/gcc
,而是一些shell包装器,它将不同的标志传递给/usr/bin/gcc
。
另一个可能的原因是你正在调试错误的二进制文件。 GDB说你正在调试/media/ubuntu/folder/sshell
,但那是你构建的二进制文件吗?
我的
Makefile
。
您的Makefile
似乎没有任何问题(除了使用CC
,CLFAGS
等非传统变量之外 - make
区分大小写)。
而不是显示Makefile
,你真的应该下雪make clean sshell
生成的命令。
以下是我将用于分类此问题的步骤:
-g
gcc
为/usr/bin/gcc
/media/ubuntu/folder/sshell
已在预期时间进行了修改(使用ls -l
)。readelf -WS /media/ubuntu/folder/sshell | grep '\.debug'
上述陈述中至少有一个可能是错误的。如果它们都是真的,那么你的GCC或binutils安装就会破碎。