[发明专利]一种在线调试C/C++程序的方法有效
申请号: | 201310444806.5 | 申请日: | 2013-09-25 |
公开(公告)号: | CN103473177B | 公开(公告)日: | 2016-11-30 |
发明(设计)人: | 张化劲;吴凌;杨楠;王千祥 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 在线 调试 c++ 程序 方法 | ||
技术领域:
本发明属于软件技术领域,具体涉及一种在线调试C/C++程序的方法。
背景技术:
传统上,程序员在本地集成开发环境中开发并调试程序。调试客户端和被调试程序都运行在一台机器上。程序员通过设置断点、单步运行、查看变量等操作,查看程序的运行时状态是否与预期相符,从而查找错误,修复程序。
随着云计算的兴起,越来越多的程序员开始使用在线集成开发环境,在浏览器中开发程序。使用在线集成开发环境使得程序员可以不受使用的机器性能配置、操作系统的限制,随时随地开发程序,即时把开发的程序同步到服务器上。传统的调试方法在面对这一新场景时,无法应对以下几个挑战:
(1)同步问题。在线集成开发环境下,程序的调试动作发生在浏览器端,而调试的程序运行在服务器端,服务器端的调试状态与浏览器端同步存在问题;
(2)多用户管理。本地开发环境中,一次调试只有一个用户,不需要进行多用户的管理;但是对于在线开发环境来说,需要并行的支持许多用户同时的调试,动态分配云端资源给多个调试实例,因此不可避免要涉及多用户的管理和资源分配。
(3)安全问题。由于用户的程序需要在服务器端运行,如果用户输入恶意程序,将可能使整个系统瘫痪。
因此,传统的基于本地集成开发环境的调试方法在在线集成开发环境中运用存在局限,不能满足基于浏览器的在线调试。
发明内容:
针对上述问题,本发明的目的是提供一种基于浏览器的在线程序调试方法。该方法使得程序员能够在在线集成开发环境中发送调试命令、实时获取服务器端调试程序状态、进行控制台输入输出,从而在浏览器中完成程序的调试工作。
本发明的技术方案如下:
(1)程序员在浏览器端发送“开始调试”的命令,服务器端的控制进程接收到“开始调试”的命令,安全扫描将要运行的程序代码,扫描通过后启动一个以用户名标识的被调试进程。同时启动一个守护线程,监控被调试进程的运行时间。
(2)程序员在浏览器端控制台可以输入数据,服务器端的控制进程接收到控制台输入后,导入被调试进程的输入流中。同时,控制进程获取被调试进程的控制台输出。服务器把控制台输出推送到浏览器端,显示给程序员。
(3)在调试过程中,程序员可以在浏览器端发送一系列调试命令,包括断点添加、断点删除、单步进入、单步跳出、运行到当前行、继续、查看变量值。控制进程接收到调试命令后,对被调试程序执行调试命令对应的操作。
(4)被调试进程实时地把状态信息反馈给控制进程。控制进程解析状态信息文本,推送相应状态到浏览器端。
(5)调试结束后,控制进程终止被调试进程,调试结束。
上述的在线程序调试方法,所属步骤(1)中,程序员在浏览器端发送“开始调试”命令时,同时附带用户名信息、被调试程序相对地址。控制进程通过上述信息定位被调试程序的绝对地址,启动被调试程序。
上述的在线程序调试方法,所属步骤(1)中,当被调试程序运行时间超过设定的阈值时,守护线程终止被调试进程,本次调试结束。
上述的在线程序调试方法,所属步骤(3)(4)中,服务器端的控制进程获取被调试进程状态信息和控制台输出后,通过服务器端推送技术(comet),把控制台输出和被调试进程状态信息推送到浏览器端。
上述的在线程序调试方法,所属步骤(4)中,服务器端的控制进程获取被调试进程状态信息文本后,通过文本语言的词法分析、语法分析,得到运行状态。运行状态包括:程序当前运行的位置、浏览器端需要查看变量的值。
上述的在线程序调试方法,所属步骤(5)中,被调试程序的终止有三种可能:程序运行结束自然终止、用户手动终止调试、运行超时守护进程终止调试。
本发明的技术效果在于:本发明的方法保证了在在线集成开发环境中,程序员在浏览器端能够正确的调试程序,保证了浏览器端和服务器端调试状态的一致性;提供了多用户的管理机制;使得程序员在浏览器端能够控制被调试进程的运行过程。
附图说明
图1表示在本发明中调试的流程。
图2表示在本发明中设置断点的示例
图3表示在本发明中控制台输入的示例
图4表示在本发明中单步调试的示例
图5表示在本发明中调试命令“下一行”的示例
图6表示在本发明中查看变量值的示例
图7表示在本发明中调试结束的示例
具体实施方式:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310444806.5/2.html,转载请声明来源钻瓜专利网。