以下操作基于通用Linux服务器环境,覆盖服务器开发最常用的C/C++项目调试,所有工具直接通过包管理器安装,无需额外下载。
根据你的服务器发行版执行对应命令:
Debian/Ubuntu系执行:
``` sudo apt update && sudo apt install -y gdb gcc g++ make ```CentOS/RHEL系执行:
``` sudo yum update && sudo yum install -y gdb gcc gcc-c++ make ```核心必做:必须在编译时添加-g参数生成调试符号,关闭编译优化,否则无法匹配源码行号,无法正常调试。
以下是可直接复制修改的完整Makefile示例:
``` CC=gcc CXX=g++ 强制添加调试符号、关闭优化 CFLAGS=-g -O0 CXXFLAGS=-g -O0 TARGET=你的可执行文件名 all: $(TARGET) 单文件编译示例,替换为你自己的编译规则即可 demo: main.o $(CXX) $(CXXFLAGS) main.o -o demo main.o: main.cpp $(CXX) $(CXXFLAGS) -c main.cpp clean: rm -f .o $(TARGET) ```以下是测试用的示例源码main.cpp,可用来验证调试流程:
``` include
执行make命令即可生成带调试信息的可执行文件。
服务器调试分两种核心场景,分别说明操作:
b 行号/函数名,例如:b 6表示在第6行设置断点,b add表示在add函数入口设置断点,b是break的缩写,可以直接使用。p x会输出x的当前值1保证系统安全。90%的原因是编译时开启了优化,或者没有加-g参数,重新编译,确认编译参数为-g -O0即可解决。
两个原因:一是没有加sudo执行gdb,加上sudo即可;二是没有关闭ptrace安全限制,执行上文的sysctl命令放开即可。
如果你用VS Code远程连接服务器开发,可以直接通过可视化界面点击调试,不用手动敲命令,配置如下:
在项目根目录创建.vscode/launch.json,放入以下可直接复制的配置:
替换配置里的可执行文件绝对路径后,直接点击运行调试,VS Code会自动列出所有运行中的进程,选择你要调试的进程即可直接可视化断点调试,和本地开发体验一致。












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图