Vs2013在Linux开发中的应用(30):程序中断

在我们在gdb中加载程序并运行时,可以按CTRL-C中断执行,此时gdb输出:

^C*stopped,reason="signal-received",signal-name="SIGINT",signal-meaning="Interru

pt",frame={addr="0x00110424",func="__kernel_vsyscall",args=[]},thread-id="1",sto

pped-threads="all",core="3"

在收到此消息后,我们需要使用事件通知SDM:

            Send(new AD7AsyncBreakCompleteEvent(), AD7AsyncBreakCompleteEvent.IID, thread);

与此相反的一个过程是,当我们在VS中选择中断时,SDM将调用:

        // The debugger calls CauseBreak when the user clicks on the pause button in VS. The debugger should respond by entering
        // breakmode.
        public int CauseBreak()

此时我们需要向gdb发送CTRL-C中断程序的执行,在接收到gdb的*stopped消息后通知SDM即可。

??

时间: 2024-10-24 12:44:31

Vs2013在Linux开发中的应用(30):程序中断的相关文章

Vs2013在Linux开发中的应用(32):文本可视化

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 VS2013提供了一个文本可视化的工具,在显示XML之类的字符串时相当方便,下面我们就让VS2013也能显示我们的字符串: 首先我们需要判断表达式的返回值类型,如果是字符串的话就设置 if (_evalResult.Flags.HasFlag(EvaluationFlags.HasRawRepr)) { propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS

Vs2013在Linux开发中的应用(18): 应用程序调试方案

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在前面我们对VS的调试接口做了基本的功能验证,下面开始方案的拟定: 如上图所示,我们需要在WINDOWS端运行两个辅助程序,一个是RemoteConsole,这个程序的主要作用是显示远端程序的输出,并将用户输入传送给远端.另一个是python解释器,这个解释器用于完成SSH/TELNET/COM连接,并负责调用远端Linux上的gdb. 当启动项目调试时,VC调试引擎将加载我们的RemoteCo

Vs2013在Linux开发中的应用(34):Ctrl + F5支持

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 VS中常用的Ctrl+F5可以不调试直接运行,但是其运行的环境变量仍然可以传递给应用程序,在我们的调试方案中使用了一个叫RemoteConsole的stub程序 在调试状态下,EmbedLinux调试引擎会在开始调试时打开一个自动选择的服务端口,再将此端口号通过环境变量传递给RemoteConsole. 在直接运行的情况下,RemoteConsole将由VS自动加载,此时由于没有调试引擎,也就没

Vs2013在Linux开发中的应用(26):表达式计算

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 当VS调试时将鼠标移到一个变量上面的时候,VS将显示这个变量的值,实际上这个时候VS进行了表达式的计算,我们所需要做的,就是把这个过程转换为gdb的命令: Operation Description -enable-pretty-printing enable Python-based pretty-printing -var-create create a variable object -v

Vs2013在Linux开发中的应用(19): 启动gdb

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 1.1    加载调试引擎 由于我们无法干预VC的调试引擎加载,但可以侦听VC的调试引擎加载事件,在此事件处理中可以调用自己的调试引擎: publicvoid LaunchDebugTarget(string filePath, string env) { varserver = (IDebugCoreServer3)GetService(typeof(IDebugCoreServer3));

Vs2013在Linux开发中的应用(17): 调试参数传递

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在启动调试后还有一个问题,那就是调试参数的传递,当调试器启动时,我们似乎已经无法获取到IDE的项目参数,此时只能通过调试器的环境变量进行参数传递. 首先在项目参数中定义好目标机器的相关信息: 然后将这些参数通过调试器的环境变量参数传递进去: 当启动调试时,SDM将调用: intIDebugEngineLaunch2.LaunchSuspended(string pszServer, IDebug

Vs2013在Linux开发中的应用(33):反汇编

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 1.1    失败 按照文档的说法,反汇编应当实现IDebugDisassemblyStream2接口,然后在 // The debugger calls this when it needs to obtain the IDebugDisassemblyStream2 for a particular code-context. // The sample engine does not su

Vs2013在Linux开发中的应用(20): 断点设置

当vs设置断点时,SDM将调用: // Creates a pending breakpoint in the engine. A pending breakpoint is contains all the information needed to bind a breakpoint to // a location in the debuggee. int IDebugEngine2.CreatePendingBreakpoint(IDebugBreakpointRequest2 pBPR

Vs2013在Linux开发中的应用(28):单步执行

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在VS调试时,有三种类型的单步操作逐语句,逐过程和跳出,当进行这三种操作时,SDM调用的其实是同一个回调: // This method is deprecated. Use the IDebugProcess3::Step method instead. /// <summary> /// Performs a step. /// /// In case there is any threa