调试技巧

合集下载

软件调试技巧经验总结

软件调试技巧经验总结

软件调试技巧经验总结软件调试是软件开发过程中非常重要的一环,正确的调试可以保证软件的稳定性和性能。

然而,调试也是一项艰难的工作,需要开发人员具备专业的技能和经验。

在这篇文章中,我将分享一些我在软件调试中积累的技巧和经验,希望能够对想要学习和提高软件调试技能的人员有所帮助。

1. 整体思路要清晰在软件调试中,整体思路的清晰是非常重要的。

在调试之前,开发人员需要对软件系统有一个完整的认识,了解各个部件之间的关系和功能。

只有这样,开发人员才能快速定位问题所在,并且避免调试过程中出现无法解决的问题。

2. 逐层调试,分块定位问题在进行软件调试时,可以将整个系统看成一个有机的整体,将其逐层分块,然后逐层调试。

首先确定系统中哪些部分可能存在问题,然后将这些部分抽离出来,逐一进行调试,直到确定问题所在。

这种方式可以有效地提高调试效率,并且降低调试的难度。

3. 重视日志的记录对于大型软件系统,问题的排查过程有时十分复杂,因此记录日志是非常重要的。

无论是系统运行日志还是调试过程中产生的调试日志,都可以对调试过程产生重要的作用。

在记录日志时,可以使用自己特定的格式或者调试工具提供的日志功能,使得日志可读性好,并且具有一定的层次性。

4. 尽早定位问题,及时修复尽早定位问题并及时修复是软件调试的关键。

调试过程中往往存在很多小问题,如果这些小问题长期存在,会逐渐累积成为一个大问题,并且会对软件的稳定性产生不良影响。

因此,在进行调试时,需要尽快定位问题,并及时修复,以确保软件系统的稳定性和性能。

5. 利用工具和第三方资源在软件调试过程中,可以利用一些工具和第三方资源来提高调试效率,例如调试器、性能监测工具、在线技术论坛等。

使用这些工具和资源可以帮助开发人员快速定位问题,并且获得解决问题的新思路和思路。

6. 注重学习和总结软件调试需要开发人员具备丰富的知识和经验,因此学习和总结的重要性不可忽视。

通过记录调试过程、总结调试经验,开发人员可以不断提高自己的调试能力和技巧,并且逐渐成为一名优秀的软件调试工程师。

调试技巧:解决程序中常见的逻辑错误

调试技巧:解决程序中常见的逻辑错误

调试技巧:解决程序中常见的逻辑错误在程序开发过程中,逻辑错误是常见的问题之一。

这些错误通常是由于程序员在编写代码时未正确理解问题要求或逻辑关系所导致的。

为了解决程序中常见的逻辑错误,下面介绍一些调试技巧:1.仔细阅读代码:首先,需要对代码进行仔细的阅读,理解代码的逻辑结构和流程。

逐行分析代码,找出可能存在问题的地方。

2.使用日志输出:在关键的代码段或逻辑分支中添加日志输出语句,记录程序运行时的关键信息,有助于追踪程序执行过程中的问题。

3.使用调试工具:现代集成开发环境(IDE)通常都提供了调试工具,可以设置断点、单步执行代码、查看变量值等功能,帮助定位和解决问题。

4.检查输入输出:检查程序的输入和输出,确保程序按照预期的方式接收输入并产生正确的输出。

输入数据是否符合要求,输出数据是否与预期一致。

5.精简测试案例:对于复杂的程序,可以通过精简测试案例的方式来定位问题。

使用简单的输入数据和情景,逐步排查问题所在。

6.分析逻辑错误类型:逻辑错误常见的类型包括条件判断错误、循环控制错误、数据处理错误等。

针对不同类型的逻辑错误采取相应的调试方法。

7.使用错误检查工具:一些编程语言和开发工具提供了错误检查功能,可以帮助发现一些潜在的逻辑错误,及时修复问题。

8.代码复审:让其他人审查代码,往往能够帮助发现自己忽略的逻辑错误。

代码复审有助于改善代码质量和减少逻辑错误的发生。

9.参考文档和资源:在解决逻辑错误时,可以查阅相关的文档和资源,了解问题的背景和解决方案,有助于更快地解决问题。

10.持续学习和提高:逻辑错误的解决需要持续学习和磨练技能。

积累经验和不断提升编程能力可以更好地处理逻辑错误。

总的来说,解决程序中常见的逻辑错误需要耐心、细心和技巧。

通过仔细阅读代码、使用日志输出、调试工具等方式,可以帮助定位和解决逻辑错误,提高程序的质量和稳定性。

同时,持续学习和提高编程能力也是解决逻辑错误的关键,希望以上调试技巧能对程序员们有所帮助。

提高编程调试能力的六个技巧

提高编程调试能力的六个技巧

提高编程调试能力的六个技巧编程是一门需要不断调试和优化的艺术,而调试则是编程过程中至关重要的一环。

良好的调试能力能够帮助程序员更快、更准确地定位和解决问题,提高代码的质量和效率。

本文将介绍六个技巧,帮助程序员提高编程调试能力。

1. 使用断点调试在调试过程中,我们可以使用断点将程序暂停在特定的行上,以便观察程序的状态和变量的值。

通过断点调试,我们可以逐步执行程序,观察程序的执行流程以及变量的变化,从而找出问题所在。

在调试的同时,还可以使用条件断点来指明满足特定条件时暂停程序,进一步缩小问题范围。

2. 加入日志输出在编写代码的过程中,加入适当的日志输出语句是一种常用的调试技巧。

通过输出一些关键的变量和程序状态,可以帮助程序员更好地理解程序执行的流程,发现隐藏的错误。

同时,通过分析日志输出,我们可以更好地定位问题,减少调试的时间。

在调试完毕后,记得将不需要的日志输出语句删除或注释掉,以避免对性能造成不必要的影响。

3. 使用调试工具现在的集成开发环境(IDE)通常都提供了强大的调试工具,如调试器、变量监视器等。

熟练掌握和使用这些调试工具,可以极大地提高调试效率。

通过断点调试、单步调试等功能,可以逐步执行程序并查看变量的值,帮助我们快速定位问题。

同时,IDE还提供了堆栈追踪等功能,可以帮助我们查看函数调用关系,找出异常产生的原因。

4. 利用单元测试单元测试是一种用于验证程序各个模块功能正确性的方法。

通过编写单元测试用例,并对程序模块进行测试,我们可以更早地发现和修复问题。

单元测试可以模拟各种边界条件和极端情况,从而验证程序在各种情况下的行为是否符合预期。

当有新的代码提交时,运行单元测试可以快速发现是否引入了新的问题。

5. 查阅文档和资料调试时,如果遇到一些奇怪的错误或者不熟悉的函数用法,不要害怕去查阅相关的文档和资料。

编程语言的官方文档、社区论坛、技术博客等都是宝贵的资源,可以帮助我们更好地理解语言特性、库函数的用法和常见问题的解决方法。

计算机程序调试:常见的调试工具和技巧

计算机程序调试:常见的调试工具和技巧

计算机程序调试:常见的调试工具和技巧计算机程序调试是解决程序中的错误或问题的过程。

在软件开发的早期阶段,调试往往是程序员们面临的一项重要任务。

本文将介绍一些常见的调试工具和技巧,帮助读者更有效地调试程序。

一、调试工具1. 编译器自带调试器:大多数编程语言的主流编译器都提供了调试器,例如GDB、LLDB等。

这些调试器通常能够提供强大的功能,如断点设置、变量跟踪、单步执行等。

程序员可以通过调试器逐行查看代码执行过程,帮助发现潜在的错误。

2. 日志调试工具:日志是开发中常用的调试方式之一。

通过在代码中插入日志输出语句,在程序执行过程中记录各个关键节点的数据和状态,从而更好地理解程序的运行流程。

开发者可以使用Log4j、Logback等日志框架来进行日志的输出和管理。

3. 单元测试工具:单元测试是一种精确度很高的调试手段。

通过编写测试用例,测试特定模块或函数的输入输出,可以有效地验证程序的正确性。

JUnit是Java中常用的单元测试工具,而Python的unittest库也是一种常用的单元测试框架。

二、调试技巧1. 断点设置:在调试器中设置断点是调试的常用技巧之一。

通过在程序代码中设置断点,程序执行到断点处时会暂停,此时可以查看各个变量的值,并逐步调试代码。

在调试过程中,可以根据需要添加、删除或禁用不同的断点,以便更好地分析问题。

2. 单步执行:调试器通常支持单步执行功能,允许程序逐行执行。

通过单步执行,可以逐步调试代码,并观察每一行代码的执行情况,对于理解程序运行过程和查找错误非常有帮助。

3. 变量跟踪:在调试过程中,经常需要查看各个变量的值,以便分析问题。

调试器通常提供了变量查看的功能,可以在程序暂停的时候查看当前变量的值,或者设置断点后在断点处查看变量的值。

通过变量跟踪,可以更清晰地了解程序的状态。

4. 日志输出:在程序中适当插入日志输出语句,输出关键数据和状态,有助于程序调试。

在调试过程中,可以根据程序执行的路径和输出的日志,分析程序的运行流程,确定问题的所在。

调试电路的方法和技巧

调试电路的方法和技巧

调试电路的方法和技巧
调试电路是电子工程领域中非常重要的一个环节,以下是一些调试电路的方法和技巧:
1. 先确定问题:在调试电路之前,需要先确定电路中是否存在问题。

这可以通过检查电路的工作状态和测试信号的响应来实现。

2. 使用适当的工具:在进行调试时,需要使用适当的工具来检查电路。

例如,可以使用万用表来检查电阻值和电感值,使用示波器来检查波形和频率等。

3. 逐步添加负载:在调试电路时,需要逐步添加负载来测试电路的性能和稳定性。

逐渐增加负载的大小可以让电路适应不同的负载情况,从而找到问题的根本原因。

4. 使用信号源:信号源可以帮助检查电路的工作状态。

例如,可以使用示波器上的正弦波信号源来检查电路的波形和频率等。

5. 调整参数:有些电路可能需要调整参数才能正常工作。

例如,如果电路需要调整电压增益或频率响应,可以使用示波器上的参数调整器来调整这些参数。

6. 记录数据:在调试电路时,需要记录数据来帮助分析和解决问题。

例如,可以使用万用表记录电阻值和电感值,使用示波器记录波形和频率等。

7. 重复测试:在确定电路已经正常工作后,需要重复测试以确保电路的稳定性和可靠性。

例如,可以在多次添加负载和调整参数后重复测试电路的性能和稳定性。

8. 考虑环境因素:环境因素也可能对电路的性能和稳定性产生影响。

例如,如果电路放在一个高温或湿度高的环境下,可能会导致电路的故障。

因此,在调试电路时需要考虑环境因素。

高级调试技巧:如何快速定位和解决问题

高级调试技巧:如何快速定位和解决问题

高级调试技巧:如何快速定位和解决问题在软件开发中,调试是非常重要的工作。

无论是新手还是经验丰富的开发人员,都会遇到各种各样的bug和问题。

因此,掌握高级调试技巧可以帮助开发人员快速定位和解决问题,提高开发效率。

本文将介绍一些高级调试技巧,帮助开发人员更快速地定位和解决问题。

1.使用日志记录在调试过程中,日志是非常重要的工具。

通过在代码中插入日志语句,可以帮助开发人员跟踪代码的执行流程。

通过查看日志,可以了解程序的运行状态,从而更快速地定位问题所在。

在日志中可以记录变量的值、函数的调用情况等信息,有助于开发人员更清晰地了解程序的运行情况。

2.使用调试器调试器是一种强大的工具,可以帮助开发人员在程序运行中进行调试。

通过调试器,开发人员可以在程序执行过程中暂停程序、单步跟踪程序执行、查看变量的值等操作。

调试器能够提供非常详细的信息,帮助开发人员更精准地定位和解决问题。

3.利用断点在使用调试器进行调试时,断点是非常有用的工具。

通过在代码中设置断点,可以让程序在特定的地方停下来,开发人员可以查看程序的状态,从而更容易地定位和解决问题。

在设置断点时,需要根据程序的逻辑结构来选择断点的位置,以便更好地进行调试。

4.使用条件断点除了普通的断点外,条件断点也是一种非常有用的调试工具。

通过设置条件断点,可以在某个特定的条件下才让程序停下来,这样可以更加精确地进行调试。

在设置条件断点时,需要考虑程序的逻辑和条件,以便更好地定位和解决问题。

5.进行单元测试单元测试可以帮助开发人员验证程序的某个特定部分是否正确。

通过编写单元测试,可以在程序运行过程中验证特定函数或模块的正确性。

单元测试可以帮助开发人员更快速地定位问题,并且在修复问题后,可以通过单元测试来验证问题是否得到了解决。

6.使用内存检测工具内存泄漏是一个非常常见的问题,特别是在大型软件开发中。

因此,使用内存检测工具可以帮助开发人员更快速地定位和解决内存泄漏问题。

通过内存检测工具,开发人员可以查看程序的内存使用情况,从而找到内存泄漏的根源。

有效的调试技巧

有效的调试技巧调试是在软件开发和故障排除过程中不可或缺的一项技能。

通过调试,我们可以找出程序中的错误并进行修复,以确保程序的正常运行。

本文将介绍一些有效的调试技巧,帮助开发人员更快地定位和解决问题。

一、理解问题在开始调试之前,首先要对问题有一个清晰的理解。

这包括了对问题产生的原因、出错的地方以及预期的结果等方面的了解。

通过仔细阅读错误日志、查看代码和与用户进行沟通,可以更好地理解问题的本质,从而更有针对性地进行调试工作。

二、使用日志记录日志记录是调试过程中非常有用的工具。

通过在代码中插入日志语句,可以实时跟踪程序的执行流程和变量的取值。

在调试时,我们可以通过查看日志来分析代码的执行路径,定位错误发生的位置。

同时,日志还可以帮助我们了解代码中的特定操作是否成功执行,以及函数的输入和输出等重要信息。

三、逐步调试逐步调试是一种常用的调试方法。

它通过在程序中设置断点,使程序在特定的位置暂停执行,然后逐行或逐个函数地查看代码的执行情况。

在每个断点处,我们可以检查变量的值、观察程序的状态,并逐步验证代码的正确性。

通过逐步调试,我们可以准确地追踪代码的执行路径,找出错误的根源。

四、利用调试工具调试工具是调试过程中的得力助手。

现代的集成开发环境(IDE)通常配备了强大的调试功能,如断点设置、变量监视、调用堆栈等。

通过这些调试工具,我们可以更方便地观察程序状态、检查变量值,并可以在错误发生时实时定位问题。

五、创建单元测试单元测试是一种有效的调试技巧之一。

通过创建针对特定函数或模块的单元测试,我们可以在运行前先验证代码的正确性。

单元测试可以模拟各种输入和操作情况,验证代码的不同分支和边界条件的正确性。

当测试失败时,我们可以根据错误信息快速定位到问题所在,并进行修复。

六、查阅文档和资源在调试过程中,如果遇到了一些特定的问题或者技术难题,查阅相关的文档和资源是一个不错的选择。

这些文档和资源提供了关于编程语言、开发框架或库的详细信息和教程。

代码调试技巧

代码调试技巧在软件开发的过程中,调试是一个不可或缺的环节。

代码调试的目的是定位和解决程序中的错误,确保程序的正常运行。

在本文中,将介绍一些常用的代码调试技巧,帮助开发人员提高调试效率。

一、使用调试工具调试工具是开发人员在调试过程中的得力助手。

常见的调试工具有断点调试器、日志记录工具和性能分析器等。

其中,断点调试器是最常用的工具之一。

1. 断点调试器:断点调试器允许开发人员在程序执行到某个特定点时暂停执行,以便观察程序状态、变量的值和执行路径等。

通过断点调试器,可以逐行查看代码、监测内存变化和检查函数调用等,从而快速定位错误。

2. 日志记录工具:日志记录工具可以将程序运行过程中的重要信息输出到日志文件中,方便开发人员分析。

通过记录关键变量的值、执行路径和函数调用等信息,可以更好地理解程序执行的逻辑,从而帮助解决问题。

3. 性能分析器:性能分析器可以帮助开发人员了解程序的运行效率和资源利用情况。

通过分析程序运行过程中的CPU占用率、内存使用情况、函数调用次数等指标,可以找到程序中的性能瓶颈,进行相应的优化。

二、遵循调试流程调试是一个有步骤的过程,遵循调试流程可以提高调试效率,减少调试时间。

下面是一个常用的调试流程:1. 复现问题:首先,需要明确复现问题的步骤和条件。

通过重现问题,可以更好地理解错误的具体表现和产生原因。

2. 定位错误:一旦问题复现,就需要定位错误的具体位置。

可以通过检查错误信息、调试输出和日志记录等途径,找出错误发生的地方。

3. 分析原因:在确定错误位置后,需要分析错误产生的原因。

可能是程序逻辑错误、变量赋值错误,或者是外部环境的变化导致的问题。

4. 修改代码:在分析错误原因后,就可以进行代码的修改。

在修改代码时,要注意遵循软件开发的最佳实践和代码规范。

5. 运行测试:在修改代码后,需要进行测试,以确认问题是否解决。

可以使用单元测试、集成测试和系统测试等方法,确保修改后的代码正常运行。

常用程序调试技巧

常用程序调试技巧程序调试是开发过程中必不可少的一环,有时候可能会碰到一些难以找出错误的情况。

下面是一些常用的程序调试技巧,可以帮助开发人员更快地找到和修复问题。

1.使用调试器调试器是程序员最常用的调试工具之一、可以在开发环境中使用内置的调试器或者第三方工具,如GDB、Xcode、Visual Studio等。

调试器可以运行程序并逐行执行代码,同时提供一系列调试功能,如断点设置、变量监视、堆栈追踪等。

这些功能可以帮助开发人员逐步检查代码,找出错误发生的位置。

在使用调试器时,可以使用断点来暂停程序的执行,并查看代码和变量的状态。

可以逐行执行程序,并逐步检查每一步的结果。

也可以在出现错误后,检查程序的堆栈追踪来获得更多的调试信息。

2.日志输出日志输出是一种常用的调试技巧,可以将程序中的关键信息输出到日志文件中。

通过查看日志文件,可以了解程序执行的过程和结果,从而找出错误的原因。

在程序中使用日志输出时,需要选择适当的输出级别,以便在调试时能够看到足够的信息。

同时,还可以通过配置文件或命令行参数来控制日志的输出级别,以便在生产环境中更好地管理日志。

可以在程序中加入条件输出,只有在特定的情况下才输出日志。

这样可以减少不必要的输出,提高程序的执行效率。

3.单元测试单元测试是一种通过独立地测试每个代码单元来验证其正确性的方法。

可以编写测试用例来模拟各种输入,并检查代码的输出是否符合预期。

通过单元测试,可以快速定位出现问题的代码,并减少在程序其他部分的调试工作。

同时,单元测试也有助于提高代码的质量,防止引入新的错误。

可以使用各种单元测试框架来编写和运行测试用例,如JUnit、Pytest、Mocha等。

这些框架提供了丰富的断言和辅助方法,方便开发人员编写、运行和管理测试用例。

4.追踪错误信息在调试过程中,有时可能遇到一些难以重现的问题。

这时可以使用追踪错误信息的方法来帮助找出问题的原因。

追踪错误信息可以在程序的关键位置打印调用栈,以及相关的变量和状态信息。

软件调试方法及调试原则

软件调试方法及调试原则软件调试是软件开发过程中不可避免的环节之一,通过调试可以发现和修复软件中的错误和缺陷,提高软件的质量和稳定性。

本文将介绍软件调试的方法和原则,并提供一些实用的调试技巧。

一、软件调试方法1.1.手动调试:手动调试是最基本的调试方法,通过将程序逐行执行,观察每一步的结果和变量的值来定位问题。

这种方法适用于简单的程序,但对于复杂的程序来说效率较低。

1.2.打印调试:打印调试是一种简单有效的调试方法,通过在程序中插入打印语句来输出关键变量的值或执行到一些位置时的状态信息。

这种方法适用于小规模的程序,但对于大规模的程序来说打印输出过多可能会影响程序的性能。

1.4.单元测试:单元测试是一种独立测试每个功能模块的调试方法,通过编写测试用例和断言来验证每个模块的功能是否正确。

这种方法可以提前发现问题,并方便重现和修复错误。

1.5.压力测试:压力测试是一种测试软件在高负载下的性能和稳定性的调试方法,通过模拟大量用户和请求来检测并解决程序在高负载下可能出现的问题,如内存泄漏、死锁等。

二、软件调试原则2.1.确定复现条件:在调试之前,首先要确定能够复现问题的具体条件,包括输入数据、环境和操作步骤等,以便能够在调试过程中重现问题。

2.3.缩小问题范围:如果程序出现问题,可以通过逐步排除法将问题范围缩小到具体的代码块或函数,以便更加精确地定位问题。

2.4.逐步测试和提交:修复问题后,应该逐步测试和提交代码,确保修复的问题没有引入新的问题,并及时将改动提交到版本控制系统中。

2.5.文档记录和交流:在调试过程中,应该及时记录调试的过程、结果和解决方法,并与团队成员进行交流和分享,以便提高团队的整体调试能力。

三、实用的调试技巧3.1.测试边界条件:在调试过程中,要特别关注边界条件和异常情况,这些通常是出错的根源。

通过针对边界条件进行有目的的测试,能够更快地找到问题。

3.2.使用断点:使用断点是调试的一种重要方法,通过在代码中设置断点,可以控制程序的停止和继续执行,便于观察和调试程序的运行过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

异常错误
指针异常 内存分配异常 除0异常 ……
使用错误较少的语言
比如,取消指针,取消goto 没有任何语言能够防止你犯错误!!
便于调试的代码风格
尽量不用全局变量 所有变量都要初始化,成员变量在构造函数 中初始化 尽量使用const 详尽的注释 排错心理准备 易重现错误 不可重现错误
排错
1
排错(1):心理准备
VC调试技巧
编译选项
高警告级别(L3或L4) 没有警告的编译:保证在编译后没有任何警告, 但是在消除警告前要进行仔细检查
2
VC调试技巧(2)
F5 运行到断点 F10 step over F11 step into Ctrl+F10 run to cursor 调用堆栈
当程序运行出现异常时,最有用
VC调用堆栈
当程序出现不可理解的异常时,多半是某个地方有 内存越界
前面赋值 a=5,后面却发现a的值不为5
不可重现错误(2)
使用函数时注意
不要使用还没有完全了解输入要求和输出结 果的函数(用好msdn,推荐在线的msdn) 注意有多个参数类型相同的函数,比如 memset(used , -1, sizeof(used)),后两个参 数容易写反
排错(4):不可重现错误(1)
检查日志和调试输出,确定大概出错位置 检查变量是否都初始化 很可能是存储分配错误
比如char* msg(){char c[10];...,return c;} 比如for(p=listp;p!=NULL;p=p->next)free(p); 比如int c[10],a=0; c[--a]=1;
outline 排错技巧
错误类型 整体上减少错误的方法 便于调试的代码风格 排错 VC调试技巧 建议
银平 2005.10.19
错误类型
编译错误 逻辑错误
程序运行结果不对
整体上减少错误的方法
减少程序各个部分之间的关联
程序的复杂性与各部件间可能互相作用的途 径数目支持)
出错时,可以看到出错函数,以及该函数的调用 栈,最常使用到堆栈的情况是指针异常. 内存访问越界
在Debug版本的VC程序中,程序会给每块new出 来的内存,预留几个字节作为越界检测之用。在 释放内存时,系统会检查这几个字节,判断是否 有内存访问越界的可能。
建议
多实践 多做笔记 多思考,减少对排错系统的依赖 调试输出,日志帮助错误定位。尽量不要从 第一行代码开始跟踪 VC调用堆栈
不要去怀疑编译器和库函数
虽然编译器和库函数可能有bug,但是出现 bug的可能性极其极其小
日志输出
Log4cplus /forum/forum.php?forum_id=351392 log4j
排错(3):易重现错误
简单的排错步骤
使用排错系统取得堆栈轨迹和几个变量的值 发现出错的位置 多数是一些低级错误(如i,j搞混了) 记录一些常犯错误,对照检查 读程序,而不是马上去改程序
排错的时间至少跟写程序一样长 发现错误能够防止类似的错误再发生
因此最好自己发现错误,这样记忆比较牢固 多做笔记
排错(2):错误定位
不要把所有的判断交给编译器和调试器,应该在程 序中自己加以程序保护和错误定位
参数检查,返回值检查 使用异常机制 使用调试输出
#define PR(x) cout<<#x”=”<<x<<'\n‘
3
相关文档
最新文档