[Lldb-commits] [lldb] [lldb] add stop-at-main option to process launch (PR #67019)

via lldb-commits lldb-commits at lists.llvm.org
Mon Sep 25 17:23:30 PDT 2023


=?utf-8?q?José?= L. Junior <jljuniorpb at gmail.com>,
=?utf-8?q?José?= L. Junior <jljuniorpb at gmail.com>,
=?utf-8?q?José?= L. Junior <jljuniorpb at gmail.com>
Message-ID:
In-Reply-To: <llvm/llvm-project/pull/67019/lldb at github.com>


================
@@ -38,7 +38,18 @@ Status CommandOptionsProcessLaunch::SetOptionValue(
   case 's': // Stop at program entry point
     launch_info.GetFlags().Set(eLaunchFlagStopAtEntry);
     break;
-
+  case 'm': // Stop at main function
+  {
+    TargetSP target_sp =
+        execution_context ? execution_context->GetTargetSP() : TargetSP();
+    BreakpointSP bp_sp = target_sp->CreateBreakpoint(
+        nullptr, nullptr, "main", eFunctionNameTypeAuto, eLanguageTypeUnknown,
----------------
jimingham wrote:

IIUC, we're not trying to break at the actual entry point (that's what -stop-at-entry-point does) but the main executable's Language entry point.  I'm not sure that is something the platform can know.   For all the C-based languages it was "main", but for some other languages it might be something else.  For Ada apparently it can be anything and you designate it "main" some other way.  In other languages it could just have a different name than "main"...

If that's true, shouldn't we be asking all the Languages we support what their "main" function is, not the Platforms.  I'm not sure they can know.  And for situations like the Ada one the language would have to be able to figure out what the main function was by some Ada specific means.



https://github.com/llvm/llvm-project/pull/67019


More information about the lldb-commits mailing list