[Lldb-commits] [lldb] [lldb][test] Remove NativePDB/local-variables.cpp (PR #231128)

Charles Zablit via lldb-commits lldb-commits at lists.llvm.org
Mon Oct 12 04:10:45 PDT 2026


https://github.com/charles-zablit created https://github.com/llvm/llvm-project/pull/231128

This test uses FileCheck to check a full lldb session line by line. Changes to lldb's output break it even when the PDB reader is fine. Everything it checks about the reader is already covered:

- AST: `NativePDB/ast-functions.cpp` checks the same main declaration with the same lines.
- Reading params and locals in a live process: `NativePDB/variables-locations.test` and `NativePDB/stack_unwinding01.cpp`, plus about 30 STL data formatter API tests with `TEST_WITH_PDB_DEBUG_INFO`.
- Expressions on params and locals: `NativePDB/inline_sites_live.cpp`.
- Line tables and stepping: `NativePDB/break-by-line.cpp` and `TestDataFormatterStdString`.

Location ranges that change between addresses are covered by `NativePDB/local-variables-registers.s`.

>From ac8724c3ca9d84dd1b70bcee3226bf708dc96d3b Mon Sep 17 00:00:00 2001
From: Charles Zablit <c_zablit at apple.com>
Date: Mon, 12 Oct 2026 12:06:57 +0100
Subject: [PATCH] [lldb][test] Remove NativePDB/local-variables.cpp

---
 .../NativePDB/Inputs/local-variables.lldbinit |  32 ----
 .../SymbolFile/NativePDB/local-variables.cpp  | 166 ------------------
 2 files changed, 198 deletions(-)
 delete mode 100644 lldb/test/Shell/SymbolFile/NativePDB/Inputs/local-variables.lldbinit
 delete mode 100644 lldb/test/Shell/SymbolFile/NativePDB/local-variables.cpp

diff --git a/lldb/test/Shell/SymbolFile/NativePDB/Inputs/local-variables.lldbinit b/lldb/test/Shell/SymbolFile/NativePDB/Inputs/local-variables.lldbinit
deleted file mode 100644
index 4c8073e7bd884..0000000000000
--- a/lldb/test/Shell/SymbolFile/NativePDB/Inputs/local-variables.lldbinit
+++ /dev/null
@@ -1,32 +0,0 @@
-break set -f local-variables.cpp -l 17
-run a b c d e f g
-expression argc
-step
-expression SomeLocal
-step
-expression Param1
-expression Param2
-step
-expression Param1
-expression Param2
-expression Local1
-step
-expression Param1
-expression Param2
-expression Local1
-expression Local2
-step
-expression Param1
-expression Param2
-expression Local1
-expression Local2
-step
-expression Param1
-expression Param2
-expression Local1
-expression Local2
-continue
-
-target modules dump ast
-
-quit
diff --git a/lldb/test/Shell/SymbolFile/NativePDB/local-variables.cpp b/lldb/test/Shell/SymbolFile/NativePDB/local-variables.cpp
deleted file mode 100644
index dd48d3e241979..0000000000000
--- a/lldb/test/Shell/SymbolFile/NativePDB/local-variables.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-// clang-format off
-
-// REQUIRES: target-windows
-// RUN: %build -o %t.exe -- %s
-// RUN: %lldb -f %t.exe -s \
-// RUN:     %p/Inputs/local-variables.lldbinit 2>&1 | FileCheck %s
-
-int Function(int Param1, char Param2) {
-  unsigned Local1 = Param1 + 1;
-  char Local2 = Param2 + 1;
-  ++Local1;
-  ++Local2;
-  return Local1;
-}
-
-int main(int argc, char **argv) {
-  int SomeLocal = argc * 2;
-  return Function(SomeLocal, 'a');
-}
-
-// CHECK:      (lldb) target create "{{.*}}local-variables.cpp.tmp.exe"
-// CHECK-NEXT: Current executable set to '{{.*}}local-variables.cpp.tmp.exe'
-// CHECK-NEXT: (lldb) command source -s 0 '{{.*}}local-variables.lldbinit'
-// CHECK-NEXT: Executing commands in '{{.*}}local-variables.lldbinit'.
-// CHECK-NEXT: (lldb) break set -f local-variables.cpp -l 17
-// CHECK-NEXT: Breakpoint 1: where = local-variables.cpp.tmp.exe`main + {{.*}} at local-variables.cpp:{{.*}}, address = {{.*}}
-// CHECK-NEXT: (lldb) run a b c d e f g
-// CHECK-NEXT: Process {{.*}} launched: '{{.*}}local-variables.cpp.tmp.exe'
-// CHECK-NEXT: Process {{.*}} stopped
-// CHECK-NEXT: * thread #1, stop reason = breakpoint 1.1
-// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`main(argc=8, argv={{.*}}) at local-variables.cpp:{{.*}}
-// CHECK-NEXT:    14   }
-// CHECK-NEXT:    15
-// CHECK-NEXT:    16   int main(int argc, char **argv) {
-// CHECK-NEXT: -> 17     int SomeLocal = argc * 2;
-// CHECK-NEXT:    18     return Function(SomeLocal, 'a');
-// CHECK-NEXT:    19   }
-// CHECK-NEXT:    20
-
-// CHECK:      (lldb) expression argc
-// CHECK-NEXT: (int) $0 = 8
-// CHECK-NEXT: (lldb) step
-// CHECK-NEXT: Process {{.*}} stopped
-// CHECK-NEXT: * thread #1, stop reason = step in
-// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`main(argc=8, argv={{.*}}) at local-variables.cpp:{{.*}}
-// CHECK-NEXT:    15
-// CHECK-NEXT:    16 int main(int argc, char **argv) {
-// CHECK-NEXT:    17     int SomeLocal = argc * 2;
-// CHECK-NEXT: -> 18     return Function(SomeLocal, 'a');
-// CHECK-NEXT:    19 }
-// CHECK-NEXT:    20
-
-// CHECK:      (lldb) expression SomeLocal
-// CHECK-NEXT: (int) $1 = 16
-// CHECK-NEXT: (lldb) step
-// CHECK-NEXT: Process {{.*}} stopped
-// CHECK-NEXT: * thread #1, stop reason = step in
-// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`int Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
-// CHECK-NEXT:    6
-// CHECK-NEXT:    7
-// CHECK-NEXT:    8 int Function(int Param1, char Param2) {
-// CHECK-NEXT: -> 9      unsigned Local1 = Param1 + 1;
-// CHECK-NEXT:    10     char Local2 = Param2 + 1;
-// CHECK-NEXT:    11     ++Local1;
-// CHECK-NEXT:    12     ++Local2;
-
-// CHECK:      (lldb) expression Param1
-// CHECK-NEXT: (int) $2 = 16
-// CHECK-NEXT: (lldb) expression Param2
-// CHECK-NEXT: (char) $3 = 'a'
-// CHECK-NEXT: (lldb) step
-// CHECK-NEXT: Process {{.*}} stopped
-// CHECK-NEXT: * thread #1, stop reason = step in
-// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`int Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
-// CHECK-NEXT:    7
-// CHECK-NEXT:    8    int Function(int Param1, char Param2) {
-// CHECK-NEXT:    9      unsigned Local1 = Param1 + 1;
-// CHECK-NEXT: -> 10     char Local2 = Param2 + 1;
-// CHECK-NEXT:    11     ++Local1;
-// CHECK-NEXT:    12     ++Local2;
-// CHECK-NEXT:    13     return Local1;
-
-// CHECK:      (lldb) expression Param1
-// CHECK-NEXT: (int) $4 = 16
-// CHECK-NEXT: (lldb) expression Param2
-// CHECK-NEXT: (char) $5 = 'a'
-// CHECK-NEXT: (lldb) expression Local1
-// CHECK-NEXT: (unsigned int) $6 = 17
-// CHECK-NEXT: (lldb) step
-// CHECK-NEXT: Process {{.*}} stopped
-// CHECK-NEXT: * thread #1, stop reason = step in
-// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`int Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
-// CHECK-NEXT:    8    int Function(int Param1, char Param2) {
-// CHECK-NEXT:    9      unsigned Local1 = Param1 + 1;
-// CHECK-NEXT:    10     char Local2 = Param2 + 1;
-// CHECK-NEXT: -> 11     ++Local1;
-// CHECK-NEXT:    12     ++Local2;
-// CHECK-NEXT:    13     return Local1;
-// CHECK-NEXT:    14   }
-
-// CHECK:      (lldb) expression Param1
-// CHECK-NEXT: (int) $7 = 16
-// CHECK-NEXT: (lldb) expression Param2
-// CHECK-NEXT: (char) $8 = 'a'
-// CHECK-NEXT: (lldb) expression Local1
-// CHECK-NEXT: (unsigned int) $9 = 17
-// CHECK-NEXT: (lldb) expression Local2
-// CHECK-NEXT: (char) $10 = 'b'
-// CHECK-NEXT: (lldb) step
-// CHECK-NEXT: Process {{.*}} stopped
-// CHECK-NEXT: * thread #1, stop reason = step in
-// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`int Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
-// CHECK-NEXT:    9      unsigned Local1 = Param1 + 1;
-// CHECK-NEXT:    10     char Local2 = Param2 + 1;
-// CHECK-NEXT:    11     ++Local1;
-// CHECK-NEXT: -> 12     ++Local2;
-// CHECK-NEXT:    13     return Local1;
-// CHECK-NEXT:    14   }
-// CHECK-NEXT:    15
-
-// CHECK:      (lldb) expression Param1
-// CHECK-NEXT: (int) $11 = 16
-// CHECK-NEXT: (lldb) expression Param2
-// CHECK-NEXT: (char) $12 = 'a'
-// CHECK-NEXT: (lldb) expression Local1
-// CHECK-NEXT: (unsigned int) $13 = 18
-// CHECK-NEXT: (lldb) expression Local2
-// CHECK-NEXT: (char) $14 = 'b'
-// CHECK-NEXT: (lldb) step
-// CHECK-NEXT: Process {{.*}} stopped
-// CHECK-NEXT: * thread #1, stop reason = step in
-// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`int Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
-// CHECK-NEXT:    10      char Local2 = Param2 + 1;
-// CHECK-NEXT:    11     ++Local1;
-// CHECK-NEXT:    12     ++Local2;
-// CHECK-NEXT: -> 13     return Local1;
-// CHECK-NEXT:    14   }
-// CHECK-NEXT:    15
-// CHECK-NEXT:    16   int main(int argc, char **argv) {
-
-// CHECK:      (lldb) expression Param1
-// CHECK-NEXT: (int) $15 = 16
-// CHECK-NEXT: (lldb) expression Param2
-// CHECK-NEXT: (char) $16 = 'a'
-// CHECK-NEXT: (lldb) expression Local1
-// CHECK-NEXT: (unsigned int) $17 = 18
-// CHECK-NEXT: (lldb) expression Local2
-// CHECK-NEXT: (char) $18 = 'c'
-// CHECK-NEXT: (lldb) continue
-// CHECK: Process {{.*}} resuming
-// CHECK-NEXT: Process {{.*}} exited with status = 18 (0x00000012)
-
-// CHECK:      (lldb) target modules dump ast
-// CHECK: Dumping clang ast for {{.*}} modules.
-// CHECK-NEXT: TranslationUnitDecl
-// CHECK-NEXT: |-FunctionDecl {{.*}} main 'int (int, char **)'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} argc 'int'
-// CHECK-NEXT: | |-ParmVarDecl {{.*}} argv 'char **'
-// CHECK-NEXT: | `-AsmLabelAttr {{.*}} Implicit "$__lldb_func::{{.*}}:main"
-// CHECK-NEXT: |-FunctionDecl {{.*}} __scrt_common_main_seh 'int ()' static 
-// CHECK-NEXT: | `-AsmLabelAttr {{.*}} Implicit "$__lldb_func::{{.*}}"
-// CHECK-NEXT: |-FunctionDecl {{.*}} invoke_main 'int ()' inline
-// CHECK: `-FunctionDecl {{.*}} Function 'int (int, char)'
-// CHECK-NEXT:   |-ParmVarDecl {{.*}} Param1 'int'
-// CHECK-NEXT:   |-ParmVarDecl {{.*}} Param2 'char'
-// CHECK-NEXT:   `-AsmLabelAttr {{.*}} Implicit "$__lldb_func::{{.*}}:?Function@@YAHHD at Z"



More information about the lldb-commits mailing list