diff --git a/test/app-luatest/console_debugger_session_test.lua b/test/app-luatest/console_debugger_session_test.lua
index 8fc22845034e480ffd3bcfe8285d4572779d8ad3..83f588fd20397aa63b57632d53ea4ed39ce1d196 100644
--- a/test/app-luatest/console_debugger_session_test.lua
+++ b/test/app-luatest/console_debugger_session_test.lua
@@ -1,10 +1,7 @@
 local t = require('luatest')
 local popen = require('popen')
 local tnt = require('tarantool')
-
-local function normalize_path(s)
-    return s:gsub("^@", ""):gsub("[^/]+$", "")
-end
+local fio = require('fio')
 
 local function unescape(s)
     return s and s:gsub('[\27\155][][()#;?%d]*[A-PRZcf-ntqry=><~]', '') or ''
@@ -22,7 +19,6 @@ local function tarantool_path(arg)
 end
 
 local TARANTOOL_PATH = tarantool_path(arg)
-local path_to_script = normalize_path(debug.getinfo(1, 'S').source)
 
 local DEBUGGER = 'luadebug'
 local dbg_header = tnt.package .. " debugger " .. tnt.version
@@ -41,6 +37,47 @@ local function debuglog(...)
     print('--', ...)
 end
 
+--[[
+    Convert passed multi-line literal script
+    to the temporary file. Get rid of line annotations,
+    leaving code alone.
+
+    Annotated lines are in a form:
+        1 | local date = require 'datetime'
+        2 | local T = date.new{hour = 3, tzoffset = '+0300'}
+]]
+local function dbg_script(content)
+    assert(content ~= nil)
+    local tmpname = os.tmpname()
+    local f = assert(io.open(tmpname, "wb"))
+    debuglog("Temporary script name:", tmpname)
+    -- process multi-line literal
+    for line in string.gmatch(content, "[^\n]+") do
+        --[[
+            Process annotated code line, delimited with '|'.
+
+        +-------- virtual line number (for easier maintaining)
+        | +------ delimiter
+        | | +---- Lua code to be executed
+        V V V
+        1 | local date = require 'datetime'
+
+        ]]
+        local delim = line:find('|')
+
+        -- if there is no delimiter - write it as-is
+        if not delim then
+            f:write(line..'\n')
+        else
+            -- TODO - assert if there is incorrect line numbers
+            -- at the moment just ignore annotation entirely.
+            f:write(line:sub(delim + 1)..'\n')
+        end
+    end
+    f:close()
+    return tmpname
+end
+
 local cmd_aliases = {
     ['b'] = 'b|break|breakpoint|add_break|add_breakpoint',
     ['bd'] = 'bd|bdelete|delete_break|delete_breakpoint',
@@ -83,17 +120,31 @@ local function get_key_arg_pair(cmd)
 end
 
 local g = t.group('debug', {
-    {sequence = 'full scenario'},
-    {sequence = 'successful breakpoints additions'},
-    {sequence = 'failed breakpoints additions'},
-    {sequence = 'successful breakpoints removals'},
-    {sequence = 'failed breakpoints removals'},
+    {sequence = 'full'},
+    {sequence = 'bp_set_ok'},
+    {sequence = 'bp_set_fail'},
+    {sequence = 'bp_delete_ok'},
+    {sequence = 'bp_delete_fail'},
 })
 
 local sequences = {
 
     -- full, complex sequence
-    ['full scenario'] = {
+    full = {
+        dbg_script [[
+     1 | local date = require 'datetime'
+     2 |
+     3 | local T = date.new{hour = 3, tzoffset = '+0300'}
+     4 | print(T)
+     5 |
+     6 | local fmt = '%Y-%m-%dT%H%M%z'
+     7 | local S  = T:format(fmt)
+     8 | print(S)
+     9 | local T1 = date.parse(S, {format = fmt})
+    10 | print(T1)
+    11 |
+    12 | os.exit(0)
+]],
         { ['\t'] = '' }, -- \t is a special value for start
         { ['n'] = dbg_prompt },
         { ['s'] = dbg_prompt },
@@ -107,11 +158,11 @@ local sequences = {
         { ['bogus;'] = 'is not recognized.' },
         { ['h'] = dbg_prompt },
         { ['t'] = '=> builtin/datetime.lua' },
-        { ['u'] = 'debug-target.lua:3 in chunk at' },
+        { ['u'] = '{file}:3 in chunk at' },
         -- FIXME (gh-8190) - we should not show calling side at luadebug.lua
         -- { ['u'] = 'Already at the bottom of the stack.' },
         { ['u'] = 'Inspecting frame: builtin/luadebug.lua' },
-        { ['d'] = 'debug-target.lua:3 in chunk at' },
+        { ['d'] = '{file}:3 in chunk at' },
         { ['d'] = 'Inspecting frame: builtin/datetime.lua' },
         { ['l'] = 'obj => {"tzoffset" = "+0300", "hour" = 3}' },
         { ['f'] = dbg_prompt },
@@ -126,57 +177,98 @@ local sequences = {
     },
 
     -- partial sequence with successful breakpoints added
-    ['successful breakpoints additions'] = {
+    bp_set_ok = {
+        dbg_script [[
+     1 | local date = require 'datetime'
+     2 |
+     3 | local T = date.new{hour = 3, tzoffset = '+0300'}
+     4 | print(T)
+     5 |
+     6 | local fmt = '%Y-%m-%dT%H%M%z'
+     7 | local S  = T:format(fmt)
+     8 | print(S)
+     9 | local T1 = date.parse(S, {format = fmt})
+    10 | print(T1)
+    11 |
+    12 | os.exit(0)
+]],
         { ['\t'] = '' }, -- \t is a special value for start
-        { ['b +10'] = dbg_prompt },
-        { ['c'] = 'debug-target.lua:10' },
+        { ['b +9'] = dbg_prompt },
+        { ['c'] = '{file}:9' },
         { ['n'] = dbg_prompt },
         { ['p S'] = 'S => "1970-01-01T0300+0300"' },
         { ['p T'] = 'T => 1970-01-01T03:00:00+0300' },
         { ['c'] = '' },
     },
 
-    -- partial sequence with failed breakpoint additions
-    ['failed breakpoints additions'] = {
+    -- partial sequence with failed breakpoint addsitions
+    bp_set_fail = {
+        dbg_script [[
+    1 | local date = require 'datetime'
+    2 | local T = date.new{hour = 3, tzoffset = '+0300'}
+    3 | print(T)
+    4 | os.exit(0)
+]],
         { ['\t'] = '' }, -- \t is a special value for start
         { ['b'] = 'expects argument, but none received' },
         { ['b 11'] = dbg_failed_bp },
-        { ['b debug-target.lua'] = dbg_failed_bp },
-        { ['b debug-target.lua:'] = dbg_failed_bp },
-        { ['b debug-target.lua:-10'] = dbg_failed_bp },
-        { ['b debug-target.lua+0'] = dbg_failed_range(0) },
+        { ['b {file}'] = dbg_failed_bp },
+        { ['b {file}:'] = dbg_failed_bp },
+        { ['b {file}:-10'] = dbg_failed_bp },
+        { ['b {file}+0'] = dbg_failed_range(0) },
         { ['b +0'] = dbg_failed_range(0) },
-        { ['b debug-target.lua+2147483632'] = dbg_failed_range(2147483632) },
+        { ['b {file}+2147483632'] = dbg_failed_range(2147483632) },
         { ['b +21474836480'] = dbg_failed_range(21474836480) },
     },
 
     -- partial sequence with breakpoints additions and removals
-    ['successful breakpoints removals'] = {
+    bp_delete_ok = {
+        dbg_script [[
+     1 | local date = require 'datetime'
+     2 |
+     3 | local T = date.new{hour = 3, tzoffset = '+0300'}
+     4 | print(T)
+     5 |
+     6 | local fmt = '%Y-%m-%dT%H%M%z'
+     7 | local S  = T:format(fmt)
+     8 | print(S)
+     9 | local T1 = date.parse(S, {format = fmt})
+    10 | print(T1)
+    11 |
+    12 | os.exit(0)
+]],
         { ['\t'] = '' }, -- \t is a special value for start
-        { ['b +7'] = 'debug-target.lua:7' },
-        { ['bl'] = 'debug-target.lua:7' },
-        { ['b :5'] = 'debug-target.lua:5' },
-        { ['bl'] = 'debug-target.lua:5' },
-        { ['bd :5'] = 'debug-target.lua:5' },
-        { ['bl'] = 'debug-target.lua:7' },
-        { ['bd +7'] = 'debug-target.lua:7' },
-        { ['b :6'] = 'debug-target.lua:6' },
-        { ['bl'] = 'debug-target.lua:6' },
+        { ['b +7'] = '{file}:7' },
+        { ['bl'] = '{file}:7' },
+        { ['b :5'] = '{file}:5' },
+        { ['bl'] = '{file}:5' },
+        { ['bd :5'] = '{file}:5' },
+        { ['bl'] = '{file}:7' },
+        { ['bd +7'] = '{file}:7' },
+        { ['b :6'] = '{file}:6' },
+        { ['bl'] = '{file}:6' },
         { ['bd *'] = 'Removed all breakpoints' },
         { ['bl'] = 'No active breakpoints defined' },
     },
     -- partial sequence with failed breakpoints removals
-    ['failed breakpoints removals'] = {
+    bp_delete_fail = {
+        dbg_script [[
+    1 | local date = require 'datetime'
+    2 | local T = date.new{hour = 3, tzoffset = '+0300'}
+    3 | print(T)
+    4 | os.exit(0)
+]],
         { ['\t'] = '' }, -- \t is a special value for start
         { ['bd'] = 'expects argument, but none received' },
         { ['bd 11'] = dbg_failed_bpd },
-        { ['bd debug-target.lua'] = dbg_failed_bpd },
-        { ['bd debug-target.lua:'] = dbg_failed_bpd },
-        { ['bd debug-target.lua:-10'] = dbg_failed_bpd },
+        { ['bd {file}'] = dbg_failed_bpd },
+        { ['bd {file}:'] = dbg_failed_bpd },
+        { ['bd {file}:-10'] = dbg_failed_bpd },
     },
 }
 
-local function run_debug_session(cmdline, sequence, header)
+local function run_debug_session(cmdline, sequence, tmpfile, header)
+    local short_src = fio.basename(tmpfile)
     --[[
         repeat multiple times to check all command aliases
     ]]
@@ -192,6 +284,8 @@ local function run_debug_session(cmdline, sequence, header)
         local first = header ~= nil
         for _, row in pairs(sequence) do
             local cmd, expected = next(row)
+            -- interpret template strings {file}
+            expected = expected:gsub('{file}', short_src)
             if cmd ~= '\t' then
                 if cmd ~= '' then
                     local key, arg = get_key_arg_pair(cmd)
@@ -227,21 +321,36 @@ local function run_debug_session(cmdline, sequence, header)
         end
         fh:close()
     end
+    debuglog('Delete temporary file ', tmpfile)
+    os.remove(tmpfile)
 end
 
 -- `tarantool -d debug-target.lua`
 g.test_debugger = function(cg)
-    local debug_target_script = path_to_script .. 'debug-target.lua'
-    local cmd = { TARANTOOL_PATH, '-d', debug_target_script }
     local scenario_name = cg.params.sequence
     t.assert(scenario_name)
-    t.assert(sequences[scenario_name])
-    run_debug_session(cmd, sequences[scenario_name], dbg_header)
+    local sequence = sequences[scenario_name]
+    t.assert(sequence)
+    local tmpfile = table.remove(sequence, 1)
+    t.assert(type(tmpfile) == 'string')
+
+    local cmd = { TARANTOOL_PATH, '-d', tmpfile }
+    run_debug_session(cmd, sequences[scenario_name], tmpfile, dbg_header)
 end
 
 local g_self = t.group('self-debug')
 
 local shorter_sequence = {
+        dbg_script [[
+    1 | local dbg = require 'luadebug'
+    2 | dbg()
+    3 | local date = require 'datetime'
+    4 |
+    5 | local T = date.new{hour = 3, tzoffset = '+0300'}
+    6 | print(T)
+    7 |
+    8 | os.exit(0)
+]],
     { ['\t'] = '' }, -- \t is a special value for start
     { ['n'] = dbg_prompt },
     { ['s'] = dbg_prompt },
@@ -249,18 +358,20 @@ local shorter_sequence = {
     { ['n'] = dbg_prompt },
     { ['p'] = 'expects argument, but none received' },
     { ['p obj'] = 'obj => {"tzoffset" = "+0300", "hour" = 3}' },
-    { ['u'] = 'debug-self-target.lua:5 in chunk at' },
+    { ['u'] = '{file}:5 in chunk at' },
     { ['u'] = 'Already at the bottom of the stack.' },
     { ['d'] = 'Inspecting frame: builtin/datetime.lua' },
     { ['l'] = 'obj => {"tzoffset" = "+0300", "hour" = 3}' },
-    { ['f'] = 'debug-self-target.lua:6 in chunk at' },
+    { ['f'] = '{file}:6 in chunk at' },
     { ['c'] = '' },
 }
 
 -- `tarantool debug-self-target.lua`, where
 -- initiate debugging session via `require 'luadebug'()`
 g_self.test_debug_self_invoke = function()
-    local debug_target_script = path_to_script .. 'debug-self-target.lua'
-    local cmd = { TARANTOOL_PATH, debug_target_script }
-    run_debug_session(cmd, shorter_sequence)
+    local tmpfile = table.remove(shorter_sequence, 1)
+    t.assert(type(tmpfile) == 'string')
+
+    local cmd = { TARANTOOL_PATH, tmpfile }
+    run_debug_session(cmd, shorter_sequence, tmpfile)
 end
diff --git a/test/app-luatest/debug-self-target.lua b/test/app-luatest/debug-self-target.lua
deleted file mode 100644
index 8aed6a967aada94d3a87aedc04f0ca570a36614f..0000000000000000000000000000000000000000
--- a/test/app-luatest/debug-self-target.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-local dbg = require 'luadebug'
-dbg()
-local date = require 'datetime'
-
-local T = date.new{hour = 3, tzoffset = '+0300'}
-print(T)
-
-os.exit(0)
diff --git a/test/app-luatest/debug-target.lua b/test/app-luatest/debug-target.lua
deleted file mode 100644
index 3546ac2dde4a0e715bf46275a0f5c902b50bf72a..0000000000000000000000000000000000000000
--- a/test/app-luatest/debug-target.lua
+++ /dev/null
@@ -1,12 +0,0 @@
-local date = require 'datetime'
-
-local T = date.new{hour = 3, tzoffset = '+0300'}
-print(T)
-
-local fmt = '%Y-%m-%dT%H%M%z'
-local S  = T:format(fmt)
-print(S)
-local T1 = date.parse(S, {format = fmt})
-print(T1)
-
-os.exit(0)