(gdb) break sent.cpp:458 No symbol table is loaded. Use the "file" command. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (sent.cpp:458) pending. (gdb) run Starting program: No executable file specified. Use the "file" or "exec-file" command.
227浏览 · 2024-03-19 15:45:12
这个问题看起来是因为你没有指定可执行文件,导致 GDB 无法启动程序。你需要使用 "file" 命令或 "exec-file" 命令指定可执行文件,然后再运行程序。
请按照以下步骤进行操作:
1. 使用 "file" 命令或 "exec-file" 命令指定可执行文件,例如:
(gdb) file my_program
2. 设置断点,例如:
(gdb) break sent.cpp:458
3. 运行程序,例如:
(gdb) run
这样应该就可以成功启动程序并设置断点了。如果你还遇到其他问题,请提供更多的上下文信息,我会尽力帮助你解决问题。
相关问题
在CMakeLists.txt文件中遇到"No symbol table is loaded. Use the 'file' command." 这样的错误通常是因为CMake未成功生成对应的可调试信息(Debug Information),这可能是由于未启用调试构建选项或是链接器配置问题。
要解决这个问题,首先需要确保你的CMakeLists.txt文件配置了正确的构建类型。对于支持调试的构建,你需要设置`CMAKE_BUILD_TYPE`,例如:
```cmake
# 添加对debug型的构建支持
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif()
# 或者更明确地设置为Debug
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") # 添加-g标志生成调试信息
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -g") # 对于可执行文件也添加调试信息
```
这个错误提示意味着 gdb 无法找到可执行文件的符号表。在大多数情况下,这是因为可执行文件没有被编译成调试模式。为了解决这个问题,您需要在编译时使用调试标志来生成可执行文件。
如果您已经编译了调试版本的可执行文件,那么您需要确保将可执行文件和符号表文件都加载到 gdb 中。您可以使用以下命令来加载可执行文件:
(gdb) file executable_file