0

0

改进了&#printf&#调试

WBOY

WBOY

发布时间:2024-08-21 08:33:17

|

880人浏览过

|

来源于dev.to

转载

阅读其他语言: english español 中文

“printf”调试是最常见的调试技术之一,特别受欢迎,因为大多数人在编写第一个程序时直观地学习它。

“printf”调试非常容易,因为您不需要任何特殊工具。当你处理第一个 bug 时,甚至在你还不知道什么是调试器之前,你自然会想到让你的程序一步步打印变量,这样你就可以在控制台中跟踪执行。

尽管它是最基本的调试技术之一,但经验丰富的开发人员也经常使用它。它可以帮助您调查任何类型的问题,例如次优例程、不一致的状态、多线程问题等等。

正如我已经提到的,这种技术不需要您使用任何特殊工具,例如 ide。但是,如果您正在使用它,它可以让您更有效地跟踪程序状态。

注意:本文展示了 intellij idea 的功能。其他 ide 中可能有也可能没有类似的功能。如果您使用其他工具,请考虑检查其文档以查看这些功能是否也存在。

实时模板

intellij idea 为最常见的调试日志记录模式提供实时模板。要使用实时模板进行调试日志记录,请键入相应的命令并按 tab 键。intellij idea 将生成打印语句并将其插入到光标处。

让我们看一些例子。

注册方法参数

public static bufferedimage recolor(bufferedimage in, bufferedimage mask, int newcolor) {

    // digite 'soutp' aqui, depois pressione tab

    return null;
}

生成的代码:

public static bufferedimage recolor(bufferedimage in, bufferedimage mask, int newcolor) {

    system.out.println("in = " + in + ", mask = " + mask + ", newcolor = " + newcolor);

    return null;
}

寄存器值

public static double coolmethod(double parameter) {
    double a = math.random();
    double b = math.random();

    // digite 'soutv' aqui, pressione tab e então selecione o valor

    return a * b * parameter;
}

生成的代码:

public static double coolmethod(double parameter) {
    double a = math.random();
    double b = math.random();

    system.out.println("b = " + b);

    return a * b * parameter;
}

注册方法条目

public static bufferedimage recolor(bufferedimage in, bufferedimage mask, int newcolor) {

    // digite 'soutm' aqui

    return null;
}

生成的代码:

public static BufferedImage recolor(BufferedImage in, BufferedImage mask, int newColor) {

    System.out.println("ImageUtils.recolor");

    return null;
}

注册断点

使用 print 语句进行调试的缺点之一是它们引入了手动管理的开销。您无法快速打开和关闭它们,并且您绝对不想意外妥协并在生产中运行它们。

因此,如果您需要记录某些内容以进行调试,我建议使用记录断点,因为它们更容易管理。

改进了

要设置日志记录断点,请按住 shift,然后单击选项卡。与常规断点不同,它不会暂停程序执行,而是打印到控制台。

默认情况下是一条消息,表明程序已经到达这一行。如果您希望记录当前堆栈跟踪或自定义表达式的结果,还可以使用断点设置中评估和记录复选框旁边的选项。

改进了

ecshop
ecshop

本版本全面兼容php5.6+,并且修复了许多官方程序的低级代码bug。在apache 2.4.17+php5.6.15环境下测试通过,人格保证无毒无木马,仅仅是一名ecshop热爱者心血来潮之作。ecshop编译更新日志:1、加入最新官方补丁。2、修改数据库连接底层为mysqli, 现在完美无缺了。3、再次对所有代码进行细节修复。4、adminers更新至1.1.2, 在线管理数据库的神器。5、测

下载

注意:注意注册表达式。评估那些引起副作用的因素可能会成为新错误或意外行为的来源。此外,当在热代码中使用时,它们会显着减慢您的程序速度。

当记录断点变得很多时,您可以在断点对话框中跟踪和管理它们(运行 | 查看断点):

改进了

您甚至可以为他们创建自定义组:

改进了

这将帮助您集中管理断点。例如,您可以创建与特定错误相关的组并将其保存以供以后使用。问题解决后,禁用该组。这样,如果问题再次出现,您将不必从头开始重新创建所有内容。您只需再次重新激活该群组即可。

频繁事件日志

对于程序运行期间频繁发生的事件,记录每个单独的事件可能会代价过高。这不仅会导致控制台充斥着消息,而且过多的 i/o 交互也会显着减慢调试会话的速度。

改进了

对于此类事件,使用通行证计数 功能可能会很有用。您可以在断点.

对话框中访问它

改进了

一旦将pass count设置为特定值,相应的断点只会在每第n次命中时触发,确保记录不会成为干扰。

概括

无论您是插入打印语句还是设置日志断点进行调试,现代工具都具有改善调试体验的功能。通过这篇文章,我想确保您了解这些让整个过程更加愉快的小技巧。

如果您对更多与调试和分析相关的文章感兴趣,请查看我的其他一些文章:

  • debugger.godmode() – 使用调试器破解 jvm 应用程序
  • 调试器缓慢故障排除
  • 调试不活动的应用程序
  • createdirectories() 有什么问题吗? - cpu 配置文件指南

调试愉快!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.09.27

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

198

2023.11.20

printf用法大全
printf用法大全

php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

73

2023.06.20

fprintf和printf的区别
fprintf和printf的区别

fprintf和printf的区别在于输出的目标不同,printf输出到标准输出流,而fprintf输出到指定的文件流。根据需要选择合适的函数来进行输出操作。更多关于fprintf和printf的相关文章详情请看本专题下面的文章。php中文网欢迎大家前来学习。

283

2023.11.28

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

395

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

575

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

395

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

575

2023.08.10

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

28

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 3万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号