- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试做一些相当简单的事情,但不明白为什么会出现错误。我有一个 Makefile,我将包含它,这样您就可以看到发生了什么。但是,当我单步执行程序时,我得到了 libc-start.c: No such file or directory
。有没有办法在 Makefile 中处理或避免这种情况?
生成文件
# makefile to build a program
# program depends on components: name and main
myname: main.o name.o
g++ -g -ggdb main.o name.o -o myname
# name.cpp has it's own header file
name.o: name.cpp name.h
g++ -c -g -ggdb name.cpp
# main.cpp also uses the header file name.h
main.o: main.cpp name.h
g++ -c -g -ggdb main.cpp
clean:
/bin/rm -f myname *.o
主要.cpp
#include <iostream>
#include <string>
using namespace std;
#include "name.h"
int main () {
name myName;
myName.SetLast(LAST);
myName.SetMiddle(MI);
myName.SetFirst(FIRST);
cout <<"My name is: ";
myName.PrintFirst();
myName.PrintMiddle();
myName.PrintLast();
return 0;
}
名称.cpp
#include <iostream>
#include <string>
using namespace std;
#include "name.h"
void name::GetFirst(string str) {
str=first;
}
void name::SetFirst(string str) {
first=str;
}
void name::GetMiddle(string str) {
str=middle;
}
void name::SetMiddle(string str) {
middle=str;
}
void name::GetLast(string str) {
str=last;
}
void name::SetLast(string str) {
last=str;
}
void name::PrintLast() {
cout << last << "\n";
}
void name::PrintMiddle() {
cout << middle;
}
void name::PrintFirst() {
cout << first;
}
名称.h
#define LAST "Tank-Engine"
#define MI "T. "
#define FIRST "Thomas "
class name {
private:
string first;
string middle;
string last;
public:
void SetFirst(string str);
void GetFirst(string str);
void SetMiddle(string str);
void GetMiddle(string str);
void SetLast(string str);
void GetLast(string str);
void PrintLast();
void PrintMiddle();
void PrintFirst();
};
单步执行时出现 gdb 错误
name::PrintLast (this=0x7fffffffe4a0) at name.cpp:31
31 cout << last << "\n";
(gdb) s
My name is: Thomas T. Tank-Engine
32 }
(gdb) s
main () at main.cpp:18
18 return 0;
(gdb) s
name::~name (this=0x7fffffffe4a0, __in_chrg=<optimized out>) at name.h:5
5 class name {
(gdb) s
main () at main.cpp:19
19 }
(gdb) s
__libc_start_main (main=0x400b86 <main()>, argc=1, argv=0x7fffffffe5b8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe5a8) at libc-start.c:323
323 libc-start.c: No such file or directory.
(gdb) s
__GI_exit (status=0) at exit.c:104
104 exit.c: No such file or directory.
(gdb) s
103 in exit.c
(gdb) s
104 in exit.c
(gdb) s
__run_exit_handlers (status=0, listp=0x7ffff78ae698 <__exit_funcs>,
run_list_atexit=run_list_atexit@entry=true) at exit.c:35
35 in exit.c
(gdb)
最佳答案
But when I step through the program I get
libc-start.c: No such file or directory
这里没有实际问题(GDB 肯定不会失败)。
发生的事情是你越过了程序的结尾,进入了libc
(它是用调试信息编译的,但你还没有为它安装源代码) .
许多程序员认为他们的程序的执行从 main
开始,到 main
返回时结束。但实际上有 1000 条指令在 before and after main
运行,因为 libc
准备执行您的程序,然后在它之后清理。除非您是 libc 开发人员,否则通常您不会关心这些前后步骤,也不应该尝试单步执行该代码。
关于c++ - gdb 调试器访问未找到的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42014784/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!