GDB/Insight LibGui库源代码解读

本文介绍Insight IDE的实现细节,特别是Libgui目录下的关键组件和C/TCL混合代码。文章概述了IDE的初始化流程,包括TCL环境设置、命令注册过程,并解释了几个核心文件的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Libgui目录下包含了insight IDE的实现.(正式实现在gdb/gdbtk/generic目录下)
因为Insight是用tcl tk实现的GDB前端,所以这个目录下主要是C和TCL的混合代码.
最后代码编译之后产生Libgui.a库文件.
几个文件说明
Tclmain.c IDE的入口,包含了初始化
paths.c 用于寻找IDE以及TCL库路径
tclcursor.c 计算光标大小
tclgetdir.c 浏览目录
tclhelp.c 帮助信息
tclmsgbox.c windows MessageBox函数的处理
tclshellexe.c windows ShellExecute函数的处理
tclwingrab.c 使能或者禁止窗口
tclwinmode.c SetErrorMode的处理


主要流程
Tclmain.c
做了环境的初始化
1.调用Tcl_FindExecutable把当前程序名传递给tcl环境
2.调用Tcl_CreateInterp创建解析器.
3.通过Tcl_Merge把程序入参合并为一个TCL list
4.设置一系列TCL 环境变量,其中把tcl_interactive设为1,启动console模式
5.调用(*appInitProc) (interp)初始化
6.如果初始化失败,那么调用Tcl_GetVar得到错误信息,用MessageBox或者控制台上显示出来.
7.删除解析器,退出

1.怎么把C的函数注册为一个TCL命令?

int
ide_create_set_error_mode_command (Tcl_Interp 
*interp)
{
if (Tcl_CreateCommand (interp, "ide_set_error_mode",
seterrormode_command, NULL, NULL) 
== NULL)
return TCL_ERROR;
return TCL_OK;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值