Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add documentation which explains that debugPrint also logs in release mode #141595

Merged
merged 2 commits into from
Jan 22, 2024

Conversation

ueman
Copy link
Contributor

@ueman ueman commented Jan 16, 2024

It's confusing that debugPrint also prints in release mode, given that a lot (most?) other things prefixed with debug don't do anything in release mode. Therefore, this adds some documentation that this is indeed logging in release mode and adds an example how to disable this.

If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
  • I signed the CLA.
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@github-actions github-actions bot added the framework flutter/packages/flutter repository. See also f: labels. label Jan 16, 2024
@lukepighetti
Copy link

This is a heck of a trap door and I think we should deprecate it or patch it so it only prints in debug or profile mode

/// if(kReleaseMode) {
/// debugPrint = (_, {int? wrapWidth}) {};
/// }
/// ```
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suspect that with this code the callsites are not actually tree shaken out and the strings (plus all the machinery to generate those, which could be huge if e.g. runtimeType is used) remains in the release binary.

The better advice to give here is that calls to debugPrint should only happen from a debug context (e.g. from within a if (kDebugMode) { } block or within an assert). In general, that is the convention in the framework: methods starting with debug* should only be invoked from a debug context. debugPrint is no exception there.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suspect that with this code the callsites are not actually tree shaken out and the strings

Interesting, I wasn't aware of that

Copy link
Contributor

@navaronbracke navaronbracke Jan 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the avoid_print lint special case this rule? (as-in it should also lint on debugPrint if not used in this way)

Copy link
Contributor Author

@ueman ueman Jan 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so. The lint rule just checks for print(...)

@@ -31,6 +31,14 @@ typedef DebugPrintCallback = void Function(String? message, { int? wrapWidth });
/// Prints a message to the console, which you can access using the "flutter"
/// tool's "logs" command ("flutter logs").
///
/// `debugPrint` logs to console even in [release mode](https://docs.flutter.dev/testing/build-modes#release).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: "Avoid starting a sentence with a lowercase letter.", https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-correct-grammar

/// `debugPrint` logs to console even in [release mode](https://docs.flutter.dev/testing/build-modes#release).
/// To disable logging from [debugPrint] in release mode, set it to a no-op:
/// ```dart
/// if(kReleaseMode) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: missing space:

Suggested change
/// if(kReleaseMode) {
/// if (kReleaseMode) {

Copy link
Member

@goderbauer goderbauer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Contributor

@gspencergoog gspencergoog left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

32384589-a60f0e74-c078-11e7-9bc1-e5b5287aea9d

@gspencergoog gspencergoog added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 22, 2024
@auto-submit auto-submit bot merged commit 174bbf2 into flutter:master Jan 22, 2024
61 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 23, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 23, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 23, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 23, 2024
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jan 23, 2024
flutter/flutter@3ee8ff2...5b673c2

2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from fd0335a910b8 to b229878c57f5 (1 revision) (flutter/flutter#142051)
2024-01-23 goderbauer@google.com Remove unused clipBehavior from OverflowBar (flutter/flutter#141976)
2024-01-23 engine-flutter-autoroll@skia.org Roll Packages from e4cbf23 to 841fe90 (7 revisions) (flutter/flutter#142047)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from d2855da628da to fd0335a910b8 (1 revision) (flutter/flutter#142046)
2024-01-23 leroux_bruno@yahoo.fr Add Share button to the SelectableRegion toolbar on Android (flutter/flutter#141447)
2024-01-23 davidmartos96@gmail.com Relax the warning of unavailable tokens in `gen_defaults` when a default value is provided (flutter/flutter#140872)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 37f68f6fc7fc to d2855da628da (1 revision) (flutter/flutter#142033)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9e582c9032e5 to 37f68f6fc7fc (1 revision) (flutter/flutter#142027)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from df6b15d35703 to 9e582c9032e5 (1 revision) (flutter/flutter#142026)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from d3dbd4225e08 to df6b15d35703 (6 revisions) (flutter/flutter#142023)
2024-01-23 ian@hixie.ch Add a comment about how to test flutter_goldens (flutter/flutter#141902)
2024-01-23 ian@hixie.ch Enable contextMenuBuilder in the absence of selectionControls (flutter/flutter#141810)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from b069d7f8f1fd to d3dbd4225e08 (3 revisions) (flutter/flutter#142005)
2024-01-23 98614782+auto-submit[bot]@users.noreply.github.com Reverts "hello_world app: migrate to Gradle Kotlin DSL" (flutter/flutter#142018)
2024-01-22 jmccandless@google.com Floating cursor docs (flutter/flutter#133002)
2024-01-22 git@reb0.org refactor: Rename filterPluginsByPlatform, cleanup Platform Strings (flutter/flutter#141780)
2024-01-22 barpac02@gmail.com hello_world app: migrate to Gradle Kotlin DSL (flutter/flutter#141541)
2024-01-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from b2762f410840 to b069d7f8f1fd (4 revisions) (flutter/flutter#141993)
2024-01-22 matanlurey@users.noreply.github.com Remove duplicate code as suggested by natebosch. (flutter/flutter#141988)
2024-01-22 jesus_sguerrero@hotmail.com Revert "Remove hack from PageView." (flutter/flutter#141977)
2024-01-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from d653559ae183 to b2762f410840 (3 revisions) (flutter/flutter#141978)
2024-01-22 matanlurey@users.noreply.github.com Do not hang on test failures of tests within `flutter_tools` (flutter/flutter#141821)
2024-01-22 gspencergoog@users.noreply.github.com Remove unneeded expectation in test (flutter/flutter#141822)
2024-01-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1efe8ba6bc04 to d653559ae183 (3 revisions) (flutter/flutter#141972)
2024-01-22 ueman@users.noreply.github.com Add documentation which explains that `debugPrint` also logs in release mode (flutter/flutter#141595)
2024-01-22 tessertaha@gmail.com Fix `RangeSlider` throws a null-check error after `clearSemantics` is called (flutter/flutter#141965)
2024-01-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from c49989292fc1 to 1efe8ba6bc04 (1 revision) (flutter/flutter#141969)
2024-01-22 110993981+htoor3@users.noreply.github.com [web] - Fix broken `TextField` in semantics mode when it's a sibling of `Navigator` (flutter/flutter#138446)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,rmistry@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
arc-yong pushed a commit to Arctuition/packages-arc that referenced this pull request Jun 14, 2024
…r#5965)

flutter/flutter@3ee8ff2...5b673c2

2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from fd0335a910b8 to b229878c57f5 (1 revision) (flutter/flutter#142051)
2024-01-23 goderbauer@google.com Remove unused clipBehavior from OverflowBar (flutter/flutter#141976)
2024-01-23 engine-flutter-autoroll@skia.org Roll Packages from e4cbf23 to 841fe90 (7 revisions) (flutter/flutter#142047)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from d2855da628da to fd0335a910b8 (1 revision) (flutter/flutter#142046)
2024-01-23 leroux_bruno@yahoo.fr Add Share button to the SelectableRegion toolbar on Android (flutter/flutter#141447)
2024-01-23 davidmartos96@gmail.com Relax the warning of unavailable tokens in `gen_defaults` when a default value is provided (flutter/flutter#140872)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 37f68f6fc7fc to d2855da628da (1 revision) (flutter/flutter#142033)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9e582c9032e5 to 37f68f6fc7fc (1 revision) (flutter/flutter#142027)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from df6b15d35703 to 9e582c9032e5 (1 revision) (flutter/flutter#142026)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from d3dbd4225e08 to df6b15d35703 (6 revisions) (flutter/flutter#142023)
2024-01-23 ian@hixie.ch Add a comment about how to test flutter_goldens (flutter/flutter#141902)
2024-01-23 ian@hixie.ch Enable contextMenuBuilder in the absence of selectionControls (flutter/flutter#141810)
2024-01-23 engine-flutter-autoroll@skia.org Roll Flutter Engine from b069d7f8f1fd to d3dbd4225e08 (3 revisions) (flutter/flutter#142005)
2024-01-23 98614782+auto-submit[bot]@users.noreply.github.com Reverts "hello_world app: migrate to Gradle Kotlin DSL" (flutter/flutter#142018)
2024-01-22 jmccandless@google.com Floating cursor docs (flutter/flutter#133002)
2024-01-22 git@reb0.org refactor: Rename filterPluginsByPlatform, cleanup Platform Strings (flutter/flutter#141780)
2024-01-22 barpac02@gmail.com hello_world app: migrate to Gradle Kotlin DSL (flutter/flutter#141541)
2024-01-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from b2762f410840 to b069d7f8f1fd (4 revisions) (flutter/flutter#141993)
2024-01-22 matanlurey@users.noreply.github.com Remove duplicate code as suggested by natebosch. (flutter/flutter#141988)
2024-01-22 jesus_sguerrero@hotmail.com Revert "Remove hack from PageView." (flutter/flutter#141977)
2024-01-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from d653559ae183 to b2762f410840 (3 revisions) (flutter/flutter#141978)
2024-01-22 matanlurey@users.noreply.github.com Do not hang on test failures of tests within `flutter_tools` (flutter/flutter#141821)
2024-01-22 gspencergoog@users.noreply.github.com Remove unneeded expectation in test (flutter/flutter#141822)
2024-01-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1efe8ba6bc04 to d653559ae183 (3 revisions) (flutter/flutter#141972)
2024-01-22 ueman@users.noreply.github.com Add documentation which explains that `debugPrint` also logs in release mode (flutter/flutter#141595)
2024-01-22 tessertaha@gmail.com Fix `RangeSlider` throws a null-check error after `clearSemantics` is called (flutter/flutter#141965)
2024-01-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from c49989292fc1 to 1efe8ba6bc04 (1 revision) (flutter/flutter#141969)
2024-01-22 110993981+htoor3@users.noreply.github.com [web] - Fix broken `TextField` in semantics mode when it's a sibling of `Navigator` (flutter/flutter#138446)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,rmistry@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants