Weird!
Can you try to debug that test program in lldb directly?
lldb bin/text
while inside of lldb
type:
b __crystal_main
r
v
it should show you at least some debug info for variables.
To exit from lldb just type q
Here is my test script that I used to test during debugging the debugger 
class TestClass
@@testClassVar = 123_u64
def self.updateTestClassVar (val)
@@testClassVar = val
end
end
alias Primitives = (Int8 | UInt8 | Int16 | UInt16 | Int32 | UInt32 | Int64 | UInt64)
alias NullablePrimitives = (Primitives | Nil)
a : Array(NullablePrimitives)? = [1i8, 2u8, 3i16, 4u16, 5i32, 6u32, 7i64, 8u64, nil]
b = StaticArray(UInt8, 256).new(0)
c = {-1_i8, 2_u8}
d = {str: "test", val: 3_u8}
e = Nil
puts "a.class=#{a.class}"
puts "c.class=#{c.class}"
puts "d.class=#{d.class}"
puts a
puts e
a && a.each do |value|
puts "a = #{value}"
end
TestClass.updateTestClassVar(1379_u64)
a = nil
a.each do |val|
puts "a = #{var}"
end if a
(1u8..255u8).each_with_index do |val, idx|
# raise "Error is here" if idx >= 5
b[idx] = val
puts "val=#{val}, b[#{idx}] = #{b[idx]}"
end
puts "b = #{b}"
so results looks like here after it runs until the last line where I put a break point:
val=238, b[237] = 238
val=239, b[238] = 239
val=240, b[239] = 240
val=241, b[240] = 241
val=242, b[241] = 242
val=243, b[242] = 243
val=244, b[243] = 244
val=245, b[244] = 245
val=246, b[245] = 246
val=247, b[246] = 247
val=248, b[247] = 248
val=249, b[248] = 249
val=250, b[249] = 250
val=251, b[250] = 251
val=252, b[251] = 252
val=253, b[252] = 253
val=254, b[253] = 254
val=255, b[254] = 255
Process 63890 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 3.1
frame #0: 0x0000000100005bfe debug_tests`__crystal_main at debug_tests.cr:43:6
40 puts "val=#{val}, b[#{idx}] = #{b[idx]}"
41 end
42
-> 43 puts "b = #{b}"
Target 0: (debug_tests) stopped.
(lldb) v
((Array(Int16 | Int32 | Int64 | Int8 | UInt16 | UInt32 | UInt64 | UInt8 | Nil) | Nil) *) a = 0x0000000000000000
(unsigned char [256]) b = "\x01\x02\x03\x04\x05\x06\a\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f������������������������������������������������������������������������������������������������
(Tuple(Int8, UInt8)) c = ([0] = '�', [1] = '\x02')
(NamedTuple(str: String, val: UInt8)) d = (str = "test", val = '\x03')
((Int16 | Int32 | Int64 | Int8 | UInt16 | UInt32 | UInt64 | UInt8 | Nil) *) __temp_487 = 0x000000010194cf00
((Int16 | Int32 | Int64 | Int8 | UInt16 | UInt32 | UInt64 | UInt8 | Nil)) value = {
type_id = 0
union = (Int16 = 0, Int32 = 0, Int64 = 0, Int8 = '\0', UInt16 = 0, UInt32 = 0, UInt64 = 0, UInt8 = '\0')
}
(unsigned char) val = '�'
(int) idx = 254
It is working fine under CodeLLDB and it respects breakpoints.
Update: Not anymore. Looks like CodeLLDB having some issues with python on macOS Catalina.
It gives me following error that I have to check how to handle it:
2020-07-14T15:58:38Z ERROR codelldb::find_python] "dlopen(/usr/local/Cellar/python@3.8/3.8.3_2/Frameworks/Python.framework/Versions/3.8/Python3, 9): image not found"
Listening on port 49381
Received signal: SIGSEGV
0: backtrace::backtrace::trace
1: backtrace::capture::Backtrace::new
2: codelldb::hook_crashes::handler
3: __sigtramp
4: __PyErr_Restore
5: __PyErr_FormatV
6: __PyErr_Format
7: _PyModule_GetDict
8: _init_locale
... skipped for brevity ...
53: _PyImport_ImportModule
54: _Py_FatalError
55: _Py_InitializeEx
Debug adapter exit code=255, signal=null.
If I create a link to map Python to Python3 in that path then it just dies with SIGSEGV.