Mercurial > vim
annotate src/debugger.c @ 16381:1dcbaa780b8e v8.1.1195
patch 8.1.1195: Vim script debugger functionality needs cleanup
commit https://github.com/vim/vim/commit/eead75c5e8e1f965548c55ee3a9388b2cb3afc36
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 21 11:35:00 2019 +0200
patch 8.1.1195: Vim script debugger functionality needs cleanup
Problem: Vim script debugger functionality needs cleanup.
Solution: Move debugger code to a separate file. Add more tests. (Yegappan
Lakshmanan, closes #4285)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 21 Apr 2019 11:45:07 +0200 |
parents | |
children | 3fc956fc63b6 |
rev | line source |
---|---|
16381
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 /* vi:set ts=8 sts=4 sw=4 noet: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2 * |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 * VIM - Vi IMproved by Bram Moolenaar |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
4 * |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
5 * Do ":help uganda" in Vim to read copying and usage conditions. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
6 * Do ":help credits" in Vim to see a list of people who contributed. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
7 * See README.txt for an overview of the Vim source code. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
8 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 * debugger.c: Vim script debugger functions |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
12 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
14 #include "vim.h" |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
16 #if defined(FEAT_EVAL) || defined(PROTO) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
17 static int debug_greedy = FALSE; /* batch mode debugging: don't save |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
18 and restore typeahead. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
19 static void do_setdebugtracelevel(char_u *arg); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
20 static void do_checkbacktracelevel(void); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
21 static void do_showbacktrace(char_u *cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
22 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
23 static char_u *debug_oldval = NULL; /* old and newval for debug expressions */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
24 static char_u *debug_newval = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
25 static int debug_expr = 0; /* use debug_expr */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
26 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
27 int |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
28 has_watchexpr(void) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
29 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
30 return debug_expr; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
31 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
32 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
33 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
34 * do_debug(): Debug mode. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
35 * Repeatedly get Ex commands, until told to continue normal execution. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
36 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
37 void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
38 do_debug(char_u *cmd) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
39 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
40 int save_msg_scroll = msg_scroll; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
41 int save_State = State; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
42 int save_did_emsg = did_emsg; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
43 int save_cmd_silent = cmd_silent; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
44 int save_msg_silent = msg_silent; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
45 int save_emsg_silent = emsg_silent; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
46 int save_redir_off = redir_off; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
47 tasave_T typeaheadbuf; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
48 int typeahead_saved = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
49 int save_ignore_script = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
50 int save_ex_normal_busy; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
51 int n; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
52 char_u *cmdline = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
53 char_u *p; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
54 char *tail = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
55 static int last_cmd = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
56 #define CMD_CONT 1 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
57 #define CMD_NEXT 2 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
58 #define CMD_STEP 3 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
59 #define CMD_FINISH 4 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
60 #define CMD_QUIT 5 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
61 #define CMD_INTERRUPT 6 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
62 #define CMD_BACKTRACE 7 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
63 #define CMD_FRAME 8 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
64 #define CMD_UP 9 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
65 #define CMD_DOWN 10 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
66 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
67 #ifdef ALWAYS_USE_GUI |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
68 /* Can't do this when there is no terminal for input/output. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
69 if (!gui.in_use) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
70 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
71 /* Break as soon as possible. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
72 debug_break_level = 9999; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
73 return; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
74 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
75 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
76 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
77 /* Make sure we are in raw mode and start termcap mode. Might have side |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
78 * effects... */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
79 settmode(TMODE_RAW); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
80 starttermcap(); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
81 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
82 ++RedrawingDisabled; /* don't redisplay the window */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
83 ++no_wait_return; /* don't wait for return */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
84 did_emsg = FALSE; /* don't use error from debugged stuff */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
85 cmd_silent = FALSE; /* display commands */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
86 msg_silent = FALSE; /* display messages */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
87 emsg_silent = FALSE; /* display error messages */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
88 redir_off = TRUE; /* don't redirect debug commands */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
89 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
90 State = NORMAL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
91 debug_mode = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
92 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
93 if (!debug_did_msg) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
94 msg(_("Entering Debug mode. Type \"cont\" to continue.")); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
95 if (debug_oldval != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
96 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
97 smsg(_("Oldval = \"%s\""), debug_oldval); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
98 vim_free(debug_oldval); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
99 debug_oldval = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
100 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
101 if (debug_newval != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
102 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
103 smsg(_("Newval = \"%s\""), debug_newval); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
104 vim_free(debug_newval); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
105 debug_newval = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
106 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
107 if (sourcing_name != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
108 msg((char *)sourcing_name); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
109 if (sourcing_lnum != 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
110 smsg(_("line %ld: %s"), (long)sourcing_lnum, cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
111 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
112 smsg(_("cmd: %s"), cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
113 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
114 * Repeat getting a command and executing it. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
115 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
116 for (;;) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
117 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
118 msg_scroll = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
119 need_wait_return = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
120 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
121 /* Save the current typeahead buffer and replace it with an empty one. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
122 * This makes sure we get input from the user here and don't interfere |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
123 * with the commands being executed. Reset "ex_normal_busy" to avoid |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
124 * the side effects of using ":normal". Save the stuff buffer and make |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
125 * it empty. Set ignore_script to avoid reading from script input. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
126 save_ex_normal_busy = ex_normal_busy; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
127 ex_normal_busy = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
128 if (!debug_greedy) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
129 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
130 save_typeahead(&typeaheadbuf); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
131 typeahead_saved = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
132 save_ignore_script = ignore_script; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
133 ignore_script = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
134 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
135 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
136 vim_free(cmdline); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
137 cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
138 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
139 if (typeahead_saved) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
140 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
141 restore_typeahead(&typeaheadbuf); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
142 ignore_script = save_ignore_script; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
143 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
144 ex_normal_busy = save_ex_normal_busy; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
145 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
146 cmdline_row = msg_row; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
147 msg_starthere(); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
148 if (cmdline != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
149 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
150 /* If this is a debug command, set "last_cmd". |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
151 * If not, reset "last_cmd". |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
152 * For a blank line use previous command. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
153 p = skipwhite(cmdline); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
154 if (*p != NUL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
155 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
156 switch (*p) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
157 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
158 case 'c': last_cmd = CMD_CONT; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
159 tail = "ont"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
160 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
161 case 'n': last_cmd = CMD_NEXT; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
162 tail = "ext"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
163 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
164 case 's': last_cmd = CMD_STEP; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
165 tail = "tep"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
166 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
167 case 'f': |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
168 last_cmd = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
169 if (p[1] == 'r') |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
170 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
171 last_cmd = CMD_FRAME; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
172 tail = "rame"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
173 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
174 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
175 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
176 last_cmd = CMD_FINISH; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
177 tail = "inish"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
178 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
179 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
180 case 'q': last_cmd = CMD_QUIT; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
181 tail = "uit"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
182 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
183 case 'i': last_cmd = CMD_INTERRUPT; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
184 tail = "nterrupt"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
185 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
186 case 'b': last_cmd = CMD_BACKTRACE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
187 if (p[1] == 't') |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
188 tail = "t"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
189 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
190 tail = "acktrace"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
191 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
192 case 'w': last_cmd = CMD_BACKTRACE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
193 tail = "here"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
194 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
195 case 'u': last_cmd = CMD_UP; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
196 tail = "p"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
197 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
198 case 'd': last_cmd = CMD_DOWN; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
199 tail = "own"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
200 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
201 default: last_cmd = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
202 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
203 if (last_cmd != 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
204 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
205 /* Check that the tail matches. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
206 ++p; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
207 while (*p != NUL && *p == *tail) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
208 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
209 ++p; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
210 ++tail; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
211 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
212 if (ASCII_ISALPHA(*p) && last_cmd != CMD_FRAME) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
213 last_cmd = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
214 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
215 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
216 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
217 if (last_cmd != 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
218 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
219 /* Execute debug command: decided where to break next and |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
220 * return. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
221 switch (last_cmd) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
222 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
223 case CMD_CONT: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
224 debug_break_level = -1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
225 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
226 case CMD_NEXT: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
227 debug_break_level = ex_nesting_level; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
228 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
229 case CMD_STEP: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
230 debug_break_level = 9999; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
231 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
232 case CMD_FINISH: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
233 debug_break_level = ex_nesting_level - 1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
234 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
235 case CMD_QUIT: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
236 got_int = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
237 debug_break_level = -1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
238 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
239 case CMD_INTERRUPT: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
240 got_int = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
241 debug_break_level = 9999; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
242 /* Do not repeat ">interrupt" cmd, continue stepping. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
243 last_cmd = CMD_STEP; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
244 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
245 case CMD_BACKTRACE: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
246 do_showbacktrace(cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
247 continue; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
248 case CMD_FRAME: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
249 if (*p == NUL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
250 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
251 do_showbacktrace(cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
252 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
253 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
254 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
255 p = skipwhite(p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
256 do_setdebugtracelevel(p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
257 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
258 continue; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
259 case CMD_UP: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
260 debug_backtrace_level++; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
261 do_checkbacktracelevel(); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
262 continue; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
263 case CMD_DOWN: |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
264 debug_backtrace_level--; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
265 do_checkbacktracelevel(); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
266 continue; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
267 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
268 /* Going out reset backtrace_level */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
269 debug_backtrace_level = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
270 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
271 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
272 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
273 /* don't debug this command */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
274 n = debug_break_level; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
275 debug_break_level = -1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
276 (void)do_cmdline(cmdline, getexline, NULL, |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
277 DOCMD_VERBOSE|DOCMD_EXCRESET); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
278 debug_break_level = n; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
279 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
280 lines_left = Rows - 1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
281 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
282 vim_free(cmdline); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
283 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
284 --RedrawingDisabled; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
285 --no_wait_return; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
286 redraw_all_later(NOT_VALID); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
287 need_wait_return = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
288 msg_scroll = save_msg_scroll; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
289 lines_left = Rows - 1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
290 State = save_State; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
291 debug_mode = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
292 did_emsg = save_did_emsg; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
293 cmd_silent = save_cmd_silent; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
294 msg_silent = save_msg_silent; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
295 emsg_silent = save_emsg_silent; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
296 redir_off = save_redir_off; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
297 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
298 /* Only print the message again when typing a command before coming back |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
299 * here. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
300 debug_did_msg = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
301 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
302 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
303 static int |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
304 get_maxbacktrace_level(void) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
305 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
306 char *p, *q; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
307 int maxbacktrace = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
308 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
309 if (sourcing_name != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
310 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
311 p = (char *)sourcing_name; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
312 while ((q = strstr(p, "..")) != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
313 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
314 p = q + 2; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
315 maxbacktrace++; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
316 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
317 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
318 return maxbacktrace; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
319 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
320 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
321 static void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
322 do_setdebugtracelevel(char_u *arg) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
323 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
324 int level; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
325 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
326 level = atoi((char *)arg); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
327 if (*arg == '+' || level < 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
328 debug_backtrace_level += level; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
329 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
330 debug_backtrace_level = level; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
331 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
332 do_checkbacktracelevel(); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
333 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
334 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
335 static void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
336 do_checkbacktracelevel(void) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
337 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
338 if (debug_backtrace_level < 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
339 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
340 debug_backtrace_level = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
341 msg(_("frame is zero")); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
342 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
343 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
344 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
345 int max = get_maxbacktrace_level(); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
346 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
347 if (debug_backtrace_level > max) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
348 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
349 debug_backtrace_level = max; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
350 smsg(_("frame at highest level: %d"), max); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
351 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
352 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
353 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
354 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
355 static void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
356 do_showbacktrace(char_u *cmd) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
357 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
358 char *cur; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
359 char *next; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
360 int i = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
361 int max = get_maxbacktrace_level(); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
362 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
363 if (sourcing_name != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
364 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
365 cur = (char *)sourcing_name; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
366 while (!got_int) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
367 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
368 next = strstr(cur, ".."); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
369 if (next != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
370 *next = NUL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
371 if (i == max - debug_backtrace_level) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
372 smsg("->%d %s", max - i, cur); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
373 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
374 smsg(" %d %s", max - i, cur); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
375 ++i; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
376 if (next == NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
377 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
378 *next = '.'; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
379 cur = next + 2; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
380 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
381 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
382 if (sourcing_lnum != 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
383 smsg(_("line %ld: %s"), (long)sourcing_lnum, cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
384 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
385 smsg(_("cmd: %s"), cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
386 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
387 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
388 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
389 * ":debug". |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
390 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
391 void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
392 ex_debug(exarg_T *eap) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
393 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
394 int debug_break_level_save = debug_break_level; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
395 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
396 debug_break_level = 9999; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
397 do_cmdline_cmd(eap->arg); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
398 debug_break_level = debug_break_level_save; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
399 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
400 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
401 static char_u *debug_breakpoint_name = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
402 static linenr_T debug_breakpoint_lnum; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
403 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
404 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
405 * When debugging or a breakpoint is set on a skipped command, no debug prompt |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
406 * is shown by do_one_cmd(). This situation is indicated by debug_skipped, and |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
407 * debug_skipped_name is then set to the source name in the breakpoint case. If |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
408 * a skipped command decides itself that a debug prompt should be displayed, it |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
409 * can do so by calling dbg_check_skipped(). |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
410 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
411 static int debug_skipped; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
412 static char_u *debug_skipped_name; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
413 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
414 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
415 * Go to debug mode when a breakpoint was encountered or "ex_nesting_level" is |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
416 * at or below the break level. But only when the line is actually |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
417 * executed. Return TRUE and set breakpoint_name for skipped commands that |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
418 * decide to execute something themselves. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
419 * Called from do_one_cmd() before executing a command. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
420 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
421 void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
422 dbg_check_breakpoint(exarg_T *eap) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
423 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
424 char_u *p; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
425 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
426 debug_skipped = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
427 if (debug_breakpoint_name != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
428 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
429 if (!eap->skip) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
430 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
431 /* replace K_SNR with "<SNR>" */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
432 if (debug_breakpoint_name[0] == K_SPECIAL |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
433 && debug_breakpoint_name[1] == KS_EXTRA |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
434 && debug_breakpoint_name[2] == (int)KE_SNR) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
435 p = (char_u *)"<SNR>"; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
436 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
437 p = (char_u *)""; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
438 smsg(_("Breakpoint in \"%s%s\" line %ld"), |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
439 p, |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
440 debug_breakpoint_name + (*p == NUL ? 0 : 3), |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
441 (long)debug_breakpoint_lnum); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
442 debug_breakpoint_name = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
443 do_debug(eap->cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
444 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
445 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
446 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
447 debug_skipped = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
448 debug_skipped_name = debug_breakpoint_name; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
449 debug_breakpoint_name = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
450 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
451 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
452 else if (ex_nesting_level <= debug_break_level) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
453 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
454 if (!eap->skip) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
455 do_debug(eap->cmd); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
456 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
457 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
458 debug_skipped = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
459 debug_skipped_name = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
460 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
461 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
462 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
463 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
464 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
465 * Go to debug mode if skipped by dbg_check_breakpoint() because eap->skip was |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
466 * set. Return TRUE when the debug mode is entered this time. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
467 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
468 int |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
469 dbg_check_skipped(exarg_T *eap) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
470 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
471 int prev_got_int; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
472 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
473 if (debug_skipped) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
474 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
475 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
476 * Save the value of got_int and reset it. We don't want a previous |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
477 * interruption cause flushing the input buffer. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
478 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
479 prev_got_int = got_int; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
480 got_int = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
481 debug_breakpoint_name = debug_skipped_name; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
482 /* eap->skip is TRUE */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
483 eap->skip = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
484 (void)dbg_check_breakpoint(eap); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
485 eap->skip = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
486 got_int |= prev_got_int; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
487 return TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
488 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
489 return FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
490 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
491 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
492 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
493 * The list of breakpoints: dbg_breakp. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
494 * This is a grow-array of structs. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
495 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
496 struct debuggy |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
497 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
498 int dbg_nr; /* breakpoint number */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
499 int dbg_type; /* DBG_FUNC, DBG_FILE or DBG_EXPR */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
500 char_u *dbg_name; /* function, expression or file name */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
501 regprog_T *dbg_prog; /* regexp program */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
502 linenr_T dbg_lnum; /* line number in function or file */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
503 int dbg_forceit; /* ! used */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
504 #ifdef FEAT_EVAL |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
505 typval_T *dbg_val; /* last result of watchexpression */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
506 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
507 int dbg_level; /* stored nested level for expr */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
508 }; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
509 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
510 static garray_T dbg_breakp = {0, 0, sizeof(struct debuggy), 4, NULL}; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
511 #define BREAKP(idx) (((struct debuggy *)dbg_breakp.ga_data)[idx]) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
512 #define DEBUGGY(gap, idx) (((struct debuggy *)gap->ga_data)[idx]) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
513 static int last_breakp = 0; /* nr of last defined breakpoint */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
514 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
515 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
516 /* Profiling uses file and func names similar to breakpoints. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
517 static garray_T prof_ga = {0, 0, sizeof(struct debuggy), 4, NULL}; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
518 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
519 #define DBG_FUNC 1 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
520 #define DBG_FILE 2 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
521 #define DBG_EXPR 3 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
522 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
523 static linenr_T debuggy_find(int file,char_u *fname, linenr_T after, garray_T *gap, int *fp); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
524 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
525 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
526 * Parse the arguments of ":profile", ":breakadd" or ":breakdel" and put them |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
527 * in the entry just after the last one in dbg_breakp. Note that "dbg_name" |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
528 * is allocated. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
529 * Returns FAIL for failure. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
530 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
531 static int |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
532 dbg_parsearg( |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
533 char_u *arg, |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
534 garray_T *gap) /* either &dbg_breakp or &prof_ga */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
535 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
536 char_u *p = arg; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
537 char_u *q; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
538 struct debuggy *bp; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
539 int here = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
540 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
541 if (ga_grow(gap, 1) == FAIL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
542 return FAIL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
543 bp = &DEBUGGY(gap, gap->ga_len); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
544 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
545 /* Find "func" or "file". */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
546 if (STRNCMP(p, "func", 4) == 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
547 bp->dbg_type = DBG_FUNC; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
548 else if (STRNCMP(p, "file", 4) == 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
549 bp->dbg_type = DBG_FILE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
550 else if ( |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
551 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
552 gap != &prof_ga && |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
553 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
554 STRNCMP(p, "here", 4) == 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
555 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
556 if (curbuf->b_ffname == NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
557 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
558 emsg(_(e_noname)); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
559 return FAIL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
560 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
561 bp->dbg_type = DBG_FILE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
562 here = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
563 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
564 else if ( |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
565 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
566 gap != &prof_ga && |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
567 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
568 STRNCMP(p, "expr", 4) == 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
569 bp->dbg_type = DBG_EXPR; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
570 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
571 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
572 semsg(_(e_invarg2), p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
573 return FAIL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
574 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
575 p = skipwhite(p + 4); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
576 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
577 /* Find optional line number. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
578 if (here) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
579 bp->dbg_lnum = curwin->w_cursor.lnum; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
580 else if ( |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
581 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
582 gap != &prof_ga && |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
583 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
584 VIM_ISDIGIT(*p)) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
585 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
586 bp->dbg_lnum = getdigits(&p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
587 p = skipwhite(p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
588 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
589 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
590 bp->dbg_lnum = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
591 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
592 /* Find the function or file name. Don't accept a function name with (). */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
593 if ((!here && *p == NUL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
594 || (here && *p != NUL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
595 || (bp->dbg_type == DBG_FUNC && strstr((char *)p, "()") != NULL)) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
596 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
597 semsg(_(e_invarg2), arg); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
598 return FAIL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
599 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
600 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
601 if (bp->dbg_type == DBG_FUNC) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
602 bp->dbg_name = vim_strsave(p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
603 else if (here) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
604 bp->dbg_name = vim_strsave(curbuf->b_ffname); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
605 else if (bp->dbg_type == DBG_EXPR) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
606 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
607 bp->dbg_name = vim_strsave(p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
608 if (bp->dbg_name != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
609 bp->dbg_val = eval_expr(bp->dbg_name, NULL); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
610 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
611 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
612 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
613 /* Expand the file name in the same way as do_source(). This means |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
614 * doing it twice, so that $DIR/file gets expanded when $DIR is |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
615 * "~/dir". */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
616 q = expand_env_save(p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
617 if (q == NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
618 return FAIL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
619 p = expand_env_save(q); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
620 vim_free(q); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
621 if (p == NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
622 return FAIL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
623 if (*p != '*') |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
624 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
625 bp->dbg_name = fix_fname(p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
626 vim_free(p); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
627 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
628 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
629 bp->dbg_name = p; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
630 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
631 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
632 if (bp->dbg_name == NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
633 return FAIL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
634 return OK; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
635 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
636 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
637 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
638 * ":breakadd". Also used for ":profile". |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
639 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
640 void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
641 ex_breakadd(exarg_T *eap) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
642 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
643 struct debuggy *bp; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
644 char_u *pat; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
645 garray_T *gap; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
646 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
647 gap = &dbg_breakp; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
648 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
649 if (eap->cmdidx == CMD_profile) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
650 gap = &prof_ga; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
651 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
652 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
653 if (dbg_parsearg(eap->arg, gap) == OK) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
654 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
655 bp = &DEBUGGY(gap, gap->ga_len); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
656 bp->dbg_forceit = eap->forceit; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
657 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
658 if (bp->dbg_type != DBG_EXPR) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
659 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
660 pat = file_pat_to_reg_pat(bp->dbg_name, NULL, NULL, FALSE); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
661 if (pat != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
662 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
663 bp->dbg_prog = vim_regcomp(pat, RE_MAGIC + RE_STRING); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
664 vim_free(pat); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
665 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
666 if (pat == NULL || bp->dbg_prog == NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
667 vim_free(bp->dbg_name); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
668 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
669 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
670 if (bp->dbg_lnum == 0) /* default line number is 1 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
671 bp->dbg_lnum = 1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
672 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
673 if (eap->cmdidx != CMD_profile) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
674 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
675 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
676 DEBUGGY(gap, gap->ga_len).dbg_nr = ++last_breakp; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
677 ++debug_tick; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
678 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
679 ++gap->ga_len; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
680 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
681 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
682 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
683 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
684 /* DBG_EXPR */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
685 DEBUGGY(gap, gap->ga_len++).dbg_nr = ++last_breakp; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
686 ++debug_tick; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
687 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
688 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
689 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
690 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
691 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
692 * ":debuggreedy". |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
693 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
694 void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
695 ex_debuggreedy(exarg_T *eap) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
696 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
697 if (eap->addr_count == 0 || eap->line2 != 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
698 debug_greedy = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
699 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
700 debug_greedy = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
701 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
702 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
703 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
704 * ":breakdel" and ":profdel". |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
705 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
706 void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
707 ex_breakdel(exarg_T *eap) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
708 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
709 struct debuggy *bp, *bpi; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
710 int nr; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
711 int todel = -1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
712 int del_all = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
713 int i; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
714 linenr_T best_lnum = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
715 garray_T *gap; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
716 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
717 gap = &dbg_breakp; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
718 if (eap->cmdidx == CMD_profdel) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
719 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
720 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
721 gap = &prof_ga; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
722 #else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
723 ex_ni(eap); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
724 return; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
725 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
726 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
727 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
728 if (vim_isdigit(*eap->arg)) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
729 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
730 /* ":breakdel {nr}" */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
731 nr = atol((char *)eap->arg); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
732 for (i = 0; i < gap->ga_len; ++i) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
733 if (DEBUGGY(gap, i).dbg_nr == nr) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
734 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
735 todel = i; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
736 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
737 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
738 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
739 else if (*eap->arg == '*') |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
740 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
741 todel = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
742 del_all = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
743 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
744 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
745 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
746 /* ":breakdel {func|file|expr} [lnum] {name}" */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
747 if (dbg_parsearg(eap->arg, gap) == FAIL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
748 return; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
749 bp = &DEBUGGY(gap, gap->ga_len); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
750 for (i = 0; i < gap->ga_len; ++i) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
751 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
752 bpi = &DEBUGGY(gap, i); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
753 if (bp->dbg_type == bpi->dbg_type |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
754 && STRCMP(bp->dbg_name, bpi->dbg_name) == 0 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
755 && (bp->dbg_lnum == bpi->dbg_lnum |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
756 || (bp->dbg_lnum == 0 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
757 && (best_lnum == 0 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
758 || bpi->dbg_lnum < best_lnum)))) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
759 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
760 todel = i; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
761 best_lnum = bpi->dbg_lnum; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
762 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
763 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
764 vim_free(bp->dbg_name); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
765 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
766 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
767 if (todel < 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
768 semsg(_("E161: Breakpoint not found: %s"), eap->arg); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
769 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
770 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
771 while (gap->ga_len > 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
772 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
773 vim_free(DEBUGGY(gap, todel).dbg_name); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
774 #ifdef FEAT_EVAL |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
775 if (DEBUGGY(gap, todel).dbg_type == DBG_EXPR |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
776 && DEBUGGY(gap, todel).dbg_val != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
777 free_tv(DEBUGGY(gap, todel).dbg_val); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
778 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
779 vim_regfree(DEBUGGY(gap, todel).dbg_prog); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
780 --gap->ga_len; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
781 if (todel < gap->ga_len) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
782 mch_memmove(&DEBUGGY(gap, todel), &DEBUGGY(gap, todel + 1), |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
783 (gap->ga_len - todel) * sizeof(struct debuggy)); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
784 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
785 if (eap->cmdidx == CMD_breakdel) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
786 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
787 ++debug_tick; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
788 if (!del_all) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
789 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
790 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
791 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
792 /* If all breakpoints were removed clear the array. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
793 if (gap->ga_len == 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
794 ga_clear(gap); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
795 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
796 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
797 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
798 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
799 * ":breaklist". |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
800 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
801 void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
802 ex_breaklist(exarg_T *eap UNUSED) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
803 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
804 struct debuggy *bp; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
805 int i; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
806 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
807 if (dbg_breakp.ga_len == 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
808 msg(_("No breakpoints defined")); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
809 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
810 for (i = 0; i < dbg_breakp.ga_len; ++i) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
811 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
812 bp = &BREAKP(i); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
813 if (bp->dbg_type == DBG_FILE) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
814 home_replace(NULL, bp->dbg_name, NameBuff, MAXPATHL, TRUE); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
815 if (bp->dbg_type != DBG_EXPR) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
816 smsg(_("%3d %s %s line %ld"), |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
817 bp->dbg_nr, |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
818 bp->dbg_type == DBG_FUNC ? "func" : "file", |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
819 bp->dbg_type == DBG_FUNC ? bp->dbg_name : NameBuff, |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
820 (long)bp->dbg_lnum); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
821 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
822 smsg(_("%3d expr %s"), |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
823 bp->dbg_nr, bp->dbg_name); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
824 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
825 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
826 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
827 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
828 * Find a breakpoint for a function or sourced file. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
829 * Returns line number at which to break; zero when no matching breakpoint. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
830 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
831 linenr_T |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
832 dbg_find_breakpoint( |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
833 int file, /* TRUE for a file, FALSE for a function */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
834 char_u *fname, /* file or function name */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
835 linenr_T after) /* after this line number */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
836 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
837 return debuggy_find(file, fname, after, &dbg_breakp, NULL); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
838 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
839 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
840 #if defined(FEAT_PROFILE) || defined(PROTO) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
841 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
842 * Return TRUE if profiling is on for a function or sourced file. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
843 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
844 int |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
845 has_profiling( |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
846 int file, /* TRUE for a file, FALSE for a function */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
847 char_u *fname, /* file or function name */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
848 int *fp) /* return: forceit */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
849 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
850 return (debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
851 != (linenr_T)0); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
852 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
853 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
854 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
855 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
856 * Common code for dbg_find_breakpoint() and has_profiling(). |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
857 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
858 static linenr_T |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
859 debuggy_find( |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
860 int file, /* TRUE for a file, FALSE for a function */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
861 char_u *fname, /* file or function name */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
862 linenr_T after, /* after this line number */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
863 garray_T *gap, /* either &dbg_breakp or &prof_ga */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
864 int *fp) /* if not NULL: return forceit */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
865 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
866 struct debuggy *bp; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
867 int i; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
868 linenr_T lnum = 0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
869 char_u *name = fname; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
870 int prev_got_int; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
871 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
872 /* Return quickly when there are no breakpoints. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
873 if (gap->ga_len == 0) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
874 return (linenr_T)0; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
875 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
876 /* Replace K_SNR in function name with "<SNR>". */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
877 if (!file && fname[0] == K_SPECIAL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
878 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
879 name = alloc((unsigned)STRLEN(fname) + 3); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
880 if (name == NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
881 name = fname; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
882 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
883 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
884 STRCPY(name, "<SNR>"); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
885 STRCPY(name + 5, fname + 3); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
886 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
887 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
888 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
889 for (i = 0; i < gap->ga_len; ++i) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
890 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
891 /* Skip entries that are not useful or are for a line that is beyond |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
892 * an already found breakpoint. */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
893 bp = &DEBUGGY(gap, i); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
894 if (((bp->dbg_type == DBG_FILE) == file && |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
895 bp->dbg_type != DBG_EXPR && ( |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
896 #ifdef FEAT_PROFILE |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
897 gap == &prof_ga || |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
898 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
899 (bp->dbg_lnum > after && (lnum == 0 || bp->dbg_lnum < lnum))))) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
900 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
901 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
902 * Save the value of got_int and reset it. We don't want a |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
903 * previous interruption cancel matching, only hitting CTRL-C |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
904 * while matching should abort it. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
905 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
906 prev_got_int = got_int; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
907 got_int = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
908 if (vim_regexec_prog(&bp->dbg_prog, FALSE, name, (colnr_T)0)) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
909 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
910 lnum = bp->dbg_lnum; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
911 if (fp != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
912 *fp = bp->dbg_forceit; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
913 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
914 got_int |= prev_got_int; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
915 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
916 #ifdef FEAT_EVAL |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
917 else if (bp->dbg_type == DBG_EXPR) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
918 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
919 typval_T *tv; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
920 int line = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
921 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
922 prev_got_int = got_int; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
923 got_int = FALSE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
924 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
925 tv = eval_expr(bp->dbg_name, NULL); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
926 if (tv != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
927 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
928 if (bp->dbg_val == NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
929 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
930 debug_oldval = typval_tostring(NULL); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
931 bp->dbg_val = tv; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
932 debug_newval = typval_tostring(bp->dbg_val); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
933 line = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
934 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
935 else |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
936 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
937 if (typval_compare(tv, bp->dbg_val, TYPE_EQUAL, |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
938 TRUE, FALSE) == OK |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
939 && tv->vval.v_number == FALSE) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
940 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
941 typval_T *v; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
942 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
943 line = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
944 debug_oldval = typval_tostring(bp->dbg_val); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
945 /* Need to evaluate again, typval_compare() overwrites |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
946 * "tv". */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
947 v = eval_expr(bp->dbg_name, NULL); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
948 debug_newval = typval_tostring(v); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
949 free_tv(bp->dbg_val); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
950 bp->dbg_val = v; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
951 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
952 free_tv(tv); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
953 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
954 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
955 else if (bp->dbg_val != NULL) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
956 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
957 debug_oldval = typval_tostring(bp->dbg_val); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
958 debug_newval = typval_tostring(NULL); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
959 free_tv(bp->dbg_val); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
960 bp->dbg_val = NULL; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
961 line = TRUE; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
962 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
963 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
964 if (line) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
965 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
966 lnum = after > 0 ? after : 1; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
967 break; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
968 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
969 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
970 got_int |= prev_got_int; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
971 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
972 #endif |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
973 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
974 if (name != fname) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
975 vim_free(name); |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
976 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
977 return lnum; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
978 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
979 |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
980 /* |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
981 * Called when a breakpoint was encountered. |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
982 */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
983 void |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
984 dbg_breakpoint(char_u *name, linenr_T lnum) |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
985 { |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
986 /* We need to check if this line is actually executed in do_one_cmd() */ |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
987 debug_breakpoint_name = name; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
988 debug_breakpoint_lnum = lnum; |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
989 } |
1dcbaa780b8e
patch 8.1.1195: Vim script debugger functionality needs cleanup
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
990 #endif |