[PE] tooltip to describe current exception mode (#8849)

* [PE] tooltip to describe current exception mode

* + test

* ++

* + exception mode tooltip

* => helper function

* - custom find

* PR
diff --git a/packages/devtools_app/lib/src/screens/debugger/controls.dart b/packages/devtools_app/lib/src/screens/debugger/controls.dart
index e1a5852..5f03b84 100644
--- a/packages/devtools_app/lib/src/screens/debugger/controls.dart
+++ b/packages/devtools_app/lib/src/screens/debugger/controls.dart
@@ -256,23 +256,27 @@
     return ValueListenableBuilder<String?>(
       valueListenable: controller.exceptionPauseMode,
       builder: (BuildContext context, modeId, _) {
-        return RoundedDropDownButton<ExceptionMode>(
-          value: ExceptionMode.from(modeId),
-          // Cannot set exception pause mode for system isolates.
-          onChanged:
-              controller.isSystemIsolate
-                  ? null
-                  : (ExceptionMode? mode) {
-                    unawaited(controller.setIsolatePauseMode(mode!.id));
-                  },
-          isDense: true,
-          items: [
-            for (final mode in ExceptionMode.modes)
-              DropdownMenuItem<ExceptionMode>(
-                value: mode,
-                child: Text(isInSmallMode ? mode.name : mode.description),
-              ),
-          ],
+        final exceptionMode = ExceptionMode.from(modeId);
+        return DevToolsTooltip(
+          message: exceptionMode.description,
+          child: RoundedDropDownButton<ExceptionMode>(
+            value: exceptionMode,
+            // Cannot set exception pause mode for system isolates.
+            onChanged:
+                controller.isSystemIsolate
+                    ? null
+                    : (ExceptionMode? mode) {
+                      unawaited(controller.setIsolatePauseMode(mode!.id));
+                    },
+            isDense: true,
+            items: [
+              for (final mode in ExceptionMode.modes)
+                DropdownMenuItem<ExceptionMode>(
+                  value: mode,
+                  child: Text(isInSmallMode ? mode.name : mode.description),
+                ),
+            ],
+          ),
         );
       },
     );
diff --git a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
index be97164..35b62b2 100644
--- a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
+++ b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md
@@ -35,7 +35,8 @@
 
 ## Debugger updates
 
-TODO: Remove this section if there are not any general updates.
+* Added a tooltip to describe the exception mode drop-down. -
+[#8849](https://github.com/flutter/devtools/pull/8849)
 
 ## Network profiler updates
 
diff --git a/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart b/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart
index 3e5b2ed..1370989 100644
--- a/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart
+++ b/packages/devtools_app/test/screens/debugger/debugger_screen_test.dart
@@ -172,6 +172,23 @@
     },
   );
 
+  testWidgetsWithWindowSize(
+    'debugger exception mode tooltip',
+    smallWindowSize,
+    (WidgetTester tester) async {
+      await tester.pumpWidget(
+        wrapWithControllers(
+          Builder(builder: screen.build),
+          debugger: debuggerController,
+        ),
+      );
+      expect(
+        find.byTooltip('Stop on uncaught exceptions', skipOffstage: false),
+        findsOneWidget,
+      );
+    },
+  );
+
   testWidgetsWithWindowSize('node selection state', windowSize, (
     WidgetTester tester,
   ) async {