标签:mod orm direct 输入输出 展开 alter section red sse
在emacs 里使用gdb
M-x gdb
就在emacs里启动了gdbshell-mode
的命令都适用M-x gud-tooltip-mode
,当鼠标放到变量上后,会弹出tooltip来显示变量的值。gud-tooltip-mode
功能,必须把自己的主mode添加到变量gud-tooltip-modes里。变量gud-tooltip-modes的默认值: (gud-mode c-mode c++-mode fortran-mode python-mode)c-x 5
开头。make-frame-command
).switch-to-buffer-other-frame
.find-file-other-frame
dired-other-frame
.delete-frame
).注意:执行下面命令的前提是,光标在source buffer,不是在gdb buffer。
gud-break
) :在光标所在行,设置断点。gud-refresh
) :从硬盘重新加载源代码内容到当前缓冲区。gud-step
) :进入函数,停在此函数的第一行gud-next
) :不进入函数,执行到下一行。gud-stepi
) :不明gud-print
) :计算光标所在位置的表达式,把计算结果显示到gdb buffer上。如果显示的不是你想要的,则选择你要计算的表达式。gud-remove
):删除光标所在行的断点。gud-tbreak
) :在光标所在行,设置临时断点。什么是临时断点?当此断点所在行被执行后,这个临时断点自动被删除。gud-up
):执行这个命令的前提是已经进入到某个函数里了。执行后跳到调用此函数的地方。gud-down
):执行这个命令的前提是已经进入到某个函数A里了。然后执行C-x C-a < ,跳到调用此函数A的地方后,再执行此命令后,跳回函数A里。gud-until
) :继续执行,直到遇到断点,或者停在光标所在的行。gud-finish
): 在某个函数里面执行此命令后,把此函数全部执行完后,停在调用此函数的下一行。下图的红点是断点,白色的箭头是程序执行到这行了。
gdb-mode-hook
设置gdb调试代码时的快捷键
(add-hook 'gdb-mode-hook
(lambda ()
(gud-tooltip-mode);;minor mode当鼠标放到变量上后,会弹出tooltip来显示变量的值
(local-set-key [f5] 'gud-step);;进入函数
(local-set-key [f6] 'gud-next);;不进入函数,到下一行
(local-set-key [f7] 'gud-finish);;跳出函数
(local-set-key [f8] 'gud-until)));;继续执行
当变量gdb-many-windows
? 的值是非nil时,执行M-x gdb
后,打开的窗口如下:
使用命令M-x gdb-many-windows
也可以打开上面的多窗口。
这些多个窗口乱了以后,可以用M-x gdb-restore-windows
,把窗口回复成上面的样子。
还可以使用M-x gdb-display-buffertype-buffer
?or?M-x gdb-frame-buffertype-buffer
,打开想看的buffer。用frame的话,buffer就在新的frame里打开;用buffer的话,就在现在的frame里打开。
buffertype:
The memory buffer lets you examine sections of program memory (see?Memory). Click?mouse-1?on the appropriate part of the header line to change the starting address or number of data items that the buffer displays. Alternatively, use?S?or?N?respectively. Click?mouse-3?on the header line to select the display format or unit size for these data items.
C-x C-a C-w (gud-watch):在source buffer把光标移动到一个变量或者表达式上,执行这个命令后,这个变量或者表达式就会显示到speedbar上。如下图:
如果查看的是结构体,类等的话,就会以树状显示,效果如下:
空格:当查看的变量的结构体时,在speedbar上这个结构体是未展开的,在结构体上按空格后就会展开它。
D?(gdb-var-delete) :在speedbar上,光标落到你要删除的变量,执行这个命令后,从speedbar上把这个变量删除掉。
回车:在speedbar上,光标落到你要修改值的变量,执行这个命令后,值被修改。
变量【gdb-show-changed-values 】:如果非nil,则使用face:font-lock-warning-face 高亮显示值发生变化的变量。默认值是非nil。
变量【gdb-delete-out-of-scope 】:如果非nil,当程序执行到变量的scope的外面是,会自动从speedbar里把这个变量删除。如果你要多次调试某个函数,可以把它设置成nil。默认值是非nil。
变量【gdb-use-colon-colon-notation 】:如果非nil,使用function::variable
的格式显示变量,这样一来就可以显示名字相同但是在不同函数里的变量了。默认值是nil。
变量【gdb-speedbar-auto-raise 】:如果非nil,当watch的变量值发生变化后,speedbar就会变成当前活动窗口。当你全屏调试代码时,speedbar就被emacs遮挡了,当这个变量的值发生变化了,speedbar就会自动蹦到emacs窗口的前面,你就知道这个变量发生变化了。默认值是nil。
标签:mod orm direct 输入输出 展开 alter section red sse
原文地址:https://www.cnblogs.com/xiaoshiwang/p/11912383.html