_ _ _ _
| | | | | | (_)
__| | ___| |__ _ _ __ _ ___| |_ _ __ _ _ __ __ _
/ _` |/ _ \ '_ \| | | |/ _` / __| __| '__| | '_ \ / _` |
| (_| | __/ |_) | |_| | (_| \__ \ |_| | | | | | | (_| |
\__,_|\___|_.__/ \__,_|\__, |___/\__|_| |_|_| |_|\__, |
__/ | __/ |
|___/ |___/
debugstring aims to automate standard debugging operations (e.g., segfaults). It does that by facilitating the ubiquitous printf()-debugging i.e., scatter logging statements around the various code snippets that you want to test.
- The form and syntax of the logging statements target the language at hand
(e.g., use
printf()in C/C++ butputs()in Ruby)
Currently the following languages are supported. First column corresponds to the standard debugging string while the second to the case of debugging for a specific variable.
// Debug String
std::cout << "[a.c:4] DEBUGGING STRING ==> " << 0 << std::endl;
// Debug Variable
std::cout << "[a.c:4] a_variable: " << a_variable << std::endl;| Lang | Debug String | Debug Variable |
|---|---|---|
| C | ✔️ | ✔️ |
| C++ | ✔️ | ✔️ |
| CMake | ✔️ | ✔️ |
| Fortran | ✔️ | ❌ |
| Haskell | ✔️ | ✔️ |
| Java | ✔️ | ✔️ |
| Javascript | ✔️ | ❌ |
| PHP | ✔️ | ✔️ |
| Python | ✔️ | ✔️ |
| R | ✔️ | ✔️ |
| Ruby | ✔️ | ❌ |
| Shell | ✔️ | ✔️ |
| Vim | ✔️ | ✔️ |
- Support for debugging variable expressions e.g., the values of variables or arbitrary expressions at certain parts of your code
- Support for vim-repeat. No
need for repeat the same mapping, or rewrite the lengthy expression that you
want to monitor, just use the
.character
For a more detailed outline of debugstring check
doc/debugstring.txt
Use the mappings of your choice to place unique logging directives during debugging times.
nnoremap <your-key-combination> <Plug>DumpDebugString
nnoremap <a-second-key-combination> <Plug>DumpDebugStringExprDefault mappings are: <Leader>ds, <Leader>dS respectively.
- Make sure that the filetype plugin is enabled. A line like
filetype plugin onin your.vimrcshould do the job.
debugstring depends on the following vim plugins:
- vim-repeat [OPTIONAL]
I would personally recommend using Pathogen for installing the plugin but any other installation method (e.g., Vundle) should do the job (if not please raise an issue on Github)
git clone https://github.com/tpope/vim-repeat ~/.vim/bundle/vim-repeat
git clone https://github.com/bergercookie/vim-debugstring.git ~/.vim/bundle/vim-debugstring
Copy the plugin files to their corresponding directories under ${HOME}/.vim
(Linux) or $HOME/vimfiles (Windows).
In case you want to contribute on a certain feature/fix, don't hesitate to discuss about it in the Github issues or to implement it and make a PR.
Current plugin is distributed under the same terms as Vim itself. See the LICENSE file
In case you like the plugin, you might as well star it on Github or rate it on vim.org
- Method to delete all the debugging strings in all "touched" buffers
- Method to delete all the debugging strings in current buffer
- Method to print name and contents of a variable
- Add option for variable debugging in rest of langs
- Make the counter buffer-specific
- Escape double single quotes vimscript variable printing
- Append to current line if that is empty
- Support repeat.vim
- Use an assertion module
- Use vader.vim for TDD
- Extend vader support for rest of languages
- Use travis for CI
- Bug with changing the filename of the current file
- Make vim-repeat dependency optional
- Turn supported languages into a table - what do we support in which language
- Make vim-repeat dependency optional

