东软NEUSOFT VC程序调试实战:从技巧到案例解析

需积分: 15 8 下载量 122 浏览量 更新于2024-07-28 1 收藏 461KB PPT 举报
"东软 NEUSOFT 的 VC 程序调试与程序排错教程" 在软件开发过程中,程序调试和排错是至关重要的环节,尤其是对于使用 Visual C++ (VC) 开发的项目。本资源由东软集团提供,详细讲解了在 VC 环境下的调试技巧和排错方法。 1. **程序调试技巧_VC** - **设置断点**:使用 F9 可以在当前行设置或取消断点。当程序运行到含有断点的行时,会暂停执行,便于开发者观察此时的状态。此外,通过 ALT+F9 可设定条件断点,只有满足特定条件时程序才会暂停。 - **单步执行**:F10 用于单步执行程序,不进入函数内部;而 F11 可以深入函数内部,查看函数调用的具体流程。使用 SHIFT+F11 可以从当前函数返回到调用者。 - **内存查看**:通过 Memory 视图可以查看指定内存地址存储的内容,这对于检查数据是否正确至关重要。 - **调用堆栈(Call Stack)**:通过 CallStack 可以查看上级函数的信息,包括变量值等,有助于追踪问题源头。 - **打印信息排错**:当标准调试工具不足以解决问题时,使用 printf 或其他输出语句打印关键信息,能帮助分析和记录错误状态,方便团队合作。 2. **排查准备** - **排查心态**:首先应假设问题是自身代码导致的,从结果出发逆向分析原因。检查程序崩溃前的输出,以及可能存在的堆栈轨迹。 - **排查策略**: - 寻找模式:在错误中寻找规律,这可能是某个已知问题的再现。 - 检查最近改动:新添加或修改的代码往往是最可能出错的地方。 - 避免重复错误:从错误中学习,确保相同的错误不会再次发生。 通过学习这些调试和排错方法,开发者能够更有效地定位和解决程序中的问题,提高软件质量。在实际操作中,结合案例练习将使理论知识更加巩固,提升解决问题的能力。

package edu.cn.neusoft.project.controller; import edu.cn.neusoft.project.model.service.WorkerService; import javafx.concurrent.Worker; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller public class WorkerAction { @Autowired private WorkerService service; @RequestMapping("login.action") public String login(){ return"login"; } @RequestMapping("loginSuccess.action") public String loginSuccess(String username,String password){ boolean ret; ret = service.login( new Worker(username,password)); if(ret){ return"loginSuccess"; } return "login"; } @ResponseBody @RequestMapping("worker.action") public List<edu.cn.neusoft.project.model.vo.Worker> worker(Model model) { List<edu.cn.neusoft.project.model.vo.Worker> list = service.showAll(); Model list1 = model.addAttribute("list", list); // for(Worker worker : list){ // System.out.println(worker); // } return list; } @ ResponseBody @ RequestMapping("updateWorker. action" ) public void updateWorker( Worker worker){ System. out. println(" ---up" + worker); service . updateWorker ((edu.cn.neusoft.project.model.vo.Worker) worker); } @ ResponseBody @ RequestMapping (" deleteWorker. action") public void deleteWorker( Integer wid){ // System. out. println("--delt--"+ wid); service . deleteWorker(wid); } @ RequestMapping("regist. action" ) public String regist(){ return "regist"; } @ RequestMapping(" registSuccess. action" ) public String registSuccess(Worker worker){ service . regist((edu.cn.neusoft.project.model.vo.Worker) worker); return "login" ; } }哪里错了?请写出正确代码

2023-05-30 上传