gpt4 book ai didi

c++ - 在未来的共享库加载时设置断点? (y 或 [n])

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:58 25 4
gpt4 key购买 nike

这是我的代码和我的操作,我想一步一步调试我的代码(以下代码只是一个示例)main.cpp

#include <iostream>
#include <string>

extern int addd(int ,int);

int main()
{
std::string str = "Hello";

std::cout << str << std::endl;

int a = 10,b = 20;

std::cout << a + b << std::endl;

return 0;
}

opr.cpp

int add(int a,int b)
{
return a + b;
}

我使用模板 makefile 形式 makefiletemplate当我执行 g++ 命令时,只需修改一些不常见的内容即可:

[root@centos-linux-10 52coder]# make
g++ -std=c++11 -g -O3 -Wall -Wextra -c opr.cpp -o opr.o
g++ -std=c++11 -g -O3 -Wall -Wextra -c main.cpp -o main.o
g++ -std=c++11 -g -O3 -Wall -Wextra ./opr.o ./main.o -Wl,--gc-sections -Wl,--strip-all -o torun
Type ./torun to execute the program.

我用-O3 2 1,都错了。我只是想一步步调试 main 函数中的代码,错误如下:

[root@centos-linux-10 52coder]# gdb torun 
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-110.el7
Copyright (C) 2013 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-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/52coder/patchtool...(no debugging symbols found)...done.
(gdb) b main
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b /root/52coder.cpp:8
No symbol table is loaded. Use the "file" command.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) show directories
Source directories searched: $cdir:$cwd

谁能告诉我这个问题我该怎么办,谢谢您的帮助。

最佳答案

您无法(轻松)调试 stripped可执行的。因为GDB调试器需要DWARF其中的调试信息。

因此将您的代码链接到:

 g++ -std=c++11 -g   -O3 -Wall -Wextra ./opr.o ./main.o  -o torun

您可能会发现用更少的 compiler optimizations 更容易调试程序(例如最多 -O0-Og-O1,而不是 -O3)。

PS。有某种方法可以将调试信息放入 不同的文件中,但这是一个不同的问题(并且特定于Linux)。

关于c++ - 在未来的共享库加载时设置断点? (y 或 [n]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54161727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com