gdb-dashboard
asyncrun.vim
gdb-dashboard | asyncrun.vim | |
---|---|---|
19 | 27 | |
10,645 | 1,820 | |
- | - | |
4.4 | 7.2 | |
about 2 months ago | about 2 months ago | |
Python | Vim Script | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gdb-dashboard
- Cyrus-and/GDB-dashboard: Modular visual interface for GDB in Python
-
Everything You Never Wanted to Know About CMake (Redux)
Disclaimer: I'm making a competing build system.
I won't tell you specific build systems, but I will tell you what to look for.
Look for power. Unlimited power. [1]
Usually, this means a few things:
1. The build system uses a general-purpose language, even if the language needs features to be added.
2. The build system does not reduce the power of the general-purpose language. For example, say it starts with Python but prohibits recursion. In that case, you know it is not unlimited power. Looking at you, Starlark.
3. The build can be dynamically changed, i.e., the build is not statically determined before it even begins.
4. Each task has unlimited power. This means that the task can use a general-purpose language, not just run external processes.
5. And there has to be some thought put it in user experience.
Why are these important? Well, let's look at why with CMake, which fails all of them.
For #1, CMake's language started as a limited language for enumerating lists. (Hence, CMakeLists.txt is the file name.) And yet, it's grown to be as general-purpose as possible. Why? Because when you need an if statement, nothing else will do, and when you need a loop, nothing else will do.
And that brings us to #2: if CMake's language started limited, are there still places where it's limited? I argue yes, and I point to the article where it says that your couldn't dynamically call functions until recently. There are probably other places.
For #3, CMake's whole model precludes it. CMake generates the build upfront then expects another build system to actually execute it. There is no changing the build without regenerating it. (And even then, CMake did a poor job until the addition of `--fresh`.) A fully dynamic build should be able to add targets and make others targets depend on those new targets dynamically, among other things.
For #4, obviously CMake limits what tasks can do because Ninja and Make limit tasks to running commands.
As another example, to implement a LaTeX target, you technically need a while loop to iterate until a fixed point. To do that with Make and Ninja, you have to jump through hoops or use an external script that may not work on all platforms.
CMake obviously fails #5, and to see how much other build systems fail it, just look for comments pouring hate on those build systems. CMake fails the most, but I haven't seen one that passes yet.
As an example, CMake barely got a debugger. Wow! Cool! It's been 20 years! My build system will have a debugger in public release #2 (one after the MVP) that will be capable of outputting to multiple TTY's like gdb-dashboard. [2] They should have had this years ago!
Should other comments suggest specific build systems, like the one that suggested Bazel, judge them by this list. Some will be better than others. None will pass everything, IMO, which is why I'm making my own.
[1]: https://youtube.com/watch?v=Sg14jNbBb-8
[2]: https://github.com/cyrus-and/gdb-dashboard
-
VSCode -> VIM, but how do I accomplish the other IDE tasks?
To debug, termdebug is built in to vim and supports a front end to gdb. In combination with gdb-dashboard this gives a reasonably good debugging experience
-
Are there any cpu emulators that could help me learn i386 assembly?
https://github.com/cyrus-and/gdb-dashboard, https://github.com/cyrus-and/gdb-dashboard/wiki
-
Usage of GDB over command line
You can use the Python API to GDB to get really fancy TUIs like this: https://github.com/cyrus-and/gdb-dashboard
-
Debugging with GDB
Try GDB Dashboard, it makes gdb much easier to use:
https://github.com/cyrus-and/gdb-dashboard
There's also Voltron which works with both gdb and lldb (amongst others):
https://github.com/snare/voltron
I can't believe no one has mentioned `gdb-dashboard` [1] yet! I use it extensively. [2]
Beyond that, I have recently learned how to write custom pretty printers for GDB. This saves a lot of screen space. I should probably update [2] soon with those new techniques.
GDB is powerful, useful, and after getting my start in IDE debuggers, including Visual Studio, I struggle whenever I have to go back.
[1]: https://github.com/cyrus-and/gdb-dashboard
[2]: https://gavinhoward.com/2020/12/my-development-environment-a...
- Gdb-dashboard: a better TUI for gdb
-
How do I "replicate" an IDE like the Keil uVision or the TI CCS using Visual Studio Code?
Debugging: Learn gdb. You can use it for assembly. You can use it for C on a MCU. You can use it for Go on a Linux system. It’s ubiquitous, versatile, and worth understanding. You can pretty-print the output with something like this to help you out at first. There are 2 things you need, however: on chip debugger and a debug probe (though you don’t need an expensive one). Effectively, you talk to GDB, GDB talks to the server exposed by OCD, OCD knows the debug probe protocol, and the debug probe can use the MCU debug peripheral via SWD or JTAG to get those details.
-
Using gdb to be productive
I use gdb because I'm usually in the terminal. I don't think terminal it's any faster though. This is a nice addition to boring old terminal gdb.
asyncrun.vim
-
Is there a plugin for async shell :%!command ?
I'm familiar with asyncrun.vim, but it outputs as quickfix. I specifically want to filter editor text (as stdin/stdout).
-
When creating a new window, can you open to the CWD in your terminal emulator of choice?
If you want to open a new terminal in the CWD of neovim, you couls either use neovim's built in terminal or, if it needa to be kitty, use the neovim AsyncRun-plugin and start kitty with the necessary command-line options to start in neovims's CWD(I uae this with Alacritty instead of Kitty).
-
How do you handle level productivity: autoformat, insert debug statement, execute file?
For running the file there are several tools. I have been using asynctasks.vim which is built on top of asyncrun.vim which I usually use to open a tmux pane and run the code/test. I've been looking at switching to overseer.nvim but haven't yet. I use justfiles to define all of my tasks.
-
How do you guys run the code you write with vim?
I can :Man blah to look up docs or :AsyncRun to build/run with jumpable output in the quickfix. Doing it within vim means I can pull from any register for pasting, yank without a mouse, hide buffers or move them to tabs, etc.
-
VSCode -> VIM, but how do I accomplish the other IDE tasks?
I use asyncrun.vim to see compile output as it happens (line by line instead of the whole dump when compile completes) and asynchronously (so I can keep navigating around).
-
Output of external command to messages ?
try asyncrun:
-
Run code with F5 and leave buffer open
Also AsyncRun and AsyncTasks worth a mention.
-
Asyncrun and ANSI codes
Hey folks, I'm using asyncrun to run async commands on vim, but some of them output ansi colorcodes, I've found powerman's AnsiEsc which is able to conceal and highlight them very well, but that only work for the current buffer, so there's no way to automate it from g:asyncrun_exit and I can't set the -post from asynctasks, has anyone found a way to fix this?
- Run code in Nvim
-
Run Any Language with Same Macro!
As you can see, I use asyncrun.nvim since sometime compiling/running will take quite long. For some complex situations, like c++ project with cmake, I use following code:
What are some alternatives?
gef - GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging capabilities for exploit devs & reverse engineers on Linux
vim-dispatch - dispatch.vim: Asynchronous build and test dispatcher
lldb-mi - LLDB's machine interface driver
lsp-zero.nvim - A starting point to setup some lsp related features in neovim.
pdb-tutorial - A simple tutorial about effectively using pdb
fzf-lua - Improved fzf.vim written in lua
nvim-gdb - Neovim thin wrapper for GDB, LLDB, PDB/PDB++ and BashDB
vim-fugitive - fugitive.vim: A Git wrapper so awesome, it should be illegal
pwndbg - Exploit Development and Reverse Engineering with GDB Made Easy
asynctasks.vim - :rocket: Modern Task System for Project Building, Testing and Deploying !!
gdb-frontend - ☕ GDBFrontend is an easy, flexible and extensible gui debugger. Try it on https://debugme.dev
todoist.nvim - A todoist extension for neovim