-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
use case(record and replay workaround): record, edit and replay gdb commands #177
Comments
Neovim doesn't either, but I do get why you would want a REPL-like behaviour for gdb. |
Unfortunately rr does not work at my workplace.
I dont understand how internally nvim-gdb stores debug points and the command translation for gdb works to estimate if its worth attempting or not (if it just works). As I understand it, the plugin should be able to allow input from external sources or gdb doing its own thing. Can I could just execute the gdb command to save the history file before quitting and sourcing via |
Essentially, nvim-gdb does only two things: it queries constantly the actual breakpoint locations from gdb to display them as signs and monitors the gdb output to jump to the current frame in the source code. That said, you can execute any gdb commands like store/load sessions and it shouldn't matter to the plugin. Unless you change the prompt or GDB output format. By the way, the Lua API is already there although not advertised: Line 39 in 4408d2c
where NvimGdb is just require'nvim-gdb' .
|
Cool, this looks perfect for my use case. Thanks a lot! |
I think what I actually want is an editable scratch buffer with the gdb command history and a command to load the current actual history into a scratch buffer. I hope to find some time for a PR soon. |
Some observations during playing around:
Questions for implementation:
|
This should be easy: Line 249 in 127087e
I'm not aware of realpath, thanks for pointing it out. I suspect the function |
So as it happens, there's no |
https://stackoverflow.com/a/40311142 However, I cant say much on what python uses internally with what fallback code for compatibility. Just for completeness, lua(filesystem) does not have realpath implemented yet lunarmodules/luafilesystem#64. |
Can you tell me how you would like to store and load persistent state of project paths of nvim-gdb? See also #180. Some notes on the user-options: I think its better to keep things more low-level as there are many ways to define, load and store a scratch buffer. The basic principle is to use (here in comments showing abit different use cases meshed together) M.makeNamedScratch = function(filepath, scratchname)
local bufs = vim.api.nvim_list_bufs()
--for i, v in ipairs(bufs) do
-- if(vim.api.nvim_buf_get_name(v) == "abspath_tocompare") then
-- print("matching comparison")
-- return false
-- end
-- print(k, ", ", v)
--end
local uri = vim.uri_from_fname(filepath)
local bufnr = vim.uri_to_bufnr(uri)
vim.bo[bufnr].bufhidden = ""
vim.bo[bufnr].buflisted = true
vim.bo[bufnr].buftype = ""
vim.bo[bufnr].readonly = false
vim.bo[bufnr].swapfile = false
return true
end and one can either use for scratch only buffer a user-given table of predefined names to match against Hence the things needed are
UPDATE M.makeScratch = function(scratchpath)
local buf = vim.api.nvim_create_buf(true, true) -- listed, scratch: nomodified, nomodeline
vim.api.nvim_win_set_buf(0, buf)
end |
I'm sorry, I've been lost for a while. Is there a feature demo from the user's point of view? We could discuss the technical details later. |
Closing, since question too vague and nothing conclusive. Might reopen parts with more specific questions or issues. |
I do see that you build a plugin, which takes record and replay more serious, which the other debugging plugins unfortunately do not.
Unfortunately,
rr
supports not all platforms and chips and having a way to getrr
-like behavior by fast manual record, edit and replay the gdb commands would be great.So far the TODO only contains
store and load breakpoints between sessions
, but gdb also allows to store the complete session and source it viagdb -x SCRIPT
.Some use cases like changing the environment variables like
PATH=''
even require the sourcing of a script before execution.So far,
script
is supported, but I dont see an option to "rerun the script after modification" or API functions to setup this up on my own.Is this in scope of this plugin?
Other more nice stuff would be to describe 1. how to extract var names and var values of current breakpoint in lua, 2. how to get the state (changes) of variable (changes) from watchpoints, 3. document how to debug both child and parent processes in a fork/vfork/clone via http://www.qnx.com/developers/docs/qnxcar2/index.jsp?topic=%2Fcom.qnx.doc.neutrino.prog%2Ftopic%2Fusing_gdb_MultipleProcesses.html
It would be nice, if there would be lua API. Maybe its just not yet documented?
The text was updated successfully, but these errors were encountered: