语法控制&调试
Syntax Control & Debugging
如何在makefile上进行语法控制和调试?我使用了g++编译器。我们可以假设下面的代码是我们的示例makefile。谢谢你的建议。
all: sample1
sample1: deneme.o hello.o
g++ deneme.o hello.o -o sample1
deneme.o: deneme.cpp
g++ -c deneme.cpp
hello.o : hello.cpp
g++ -c hello.cpp
通常,您有makefile变量,如:
DEBUG=-Wall -g
并在构建命令中使用它们:
sample1: deneme.o hello.o
g++ deneme.o hello.o -o sample1
sample1-debug: deneme-debug hello-debug
g++ $(DEBUG) deneme.o hello.o -o sample1
deneme.o: deneme.cpp
g++ -c deneme.cpp
deneme-debug: deneme.cpp
g++ $(DEBUG) -c deneme.cpp
hello.o: hello.cpp
g++ -c hello.cpp
hello-debug: hello.cpp
g++ $(DEBUG) -c hello.cpp
然后使用make sample1-degug
来调试可执行文件。
就个人经验而言,我会保持makefile的原始结构,并在每个g++配方行中插入CDEBUG变量。(当然,可以使用静态模式改进makefile,但这里的情况并非如此)。通过这种方式,我所要做的就是生成一个可调试的程序,要么改变Makefile中的CDEBUG声明,要么在make调用中重写"make"CDEBUG=-g"。
CDEBUG := -g #(or -ggdb, -g1- -g2 -gdwarf and so on)
all: sample1
sample1: deneme.o hello.o
g++ deneme.o hello.o -o sample1
deneme.o: deneme.cpp
g++ $(CDEBUG) -c deneme.cpp
hello.o : hello.cpp
g++ $(CDEBUG) -c hello.cpp
Paul提供的解决方案可以工作,但是注意它会创建许多不重要的*-debug文件。当然,我也很乐意理解你。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 控制允许动态运行c++的并发操作数
- 在linux上调试巨大的C++项目
- 从控制台中删除最后打印的元素
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 正在VS调试器中监视映射条目
- 使用调试/崩溃报告将应用程序部署到客户端
- 是否可以使用if constexpr删除控制流语句
- VC++本机单元测试,找不到调试符号
- main() 中的 std::cout 在调试期间不会在调试控制台中打印任何内容
- 如何使C++调试语句显示在 gdb 控制台中
- printf 语句在调试期间未在控制台上打印
- 是否可以在 Visual Studio 中的 Win32 C++应用程序中的控制台中进行调试
- 我可以控制调试器窗口中显示的浮点数和双精度变量的位数吗?
- 如何在性能和VMS上对C++进行代码审查/调试/编码/测试/版本控制
- Xcode 5 带有 %s 格式说明符的 LLVM printf 在调试控制台中不起作用
- log4cplus在Visual Studio调试控制台中进行日志记录
- 我正在失去控制,无法调试
- 语法控制&调试