VC,Windbg,gdb执行到指定代码行方法

在调试的时候,当执行到一段代码时,为了调试或者其他目的需要,有时候需要对一些或者几行代码多次执行或者跳过几行代码的执行,这是很有用的,比如下面的一个循环:

for(int i=0;i<num;i++)
{
//do something
}

也许num很大,但是我们又想看看前面几次循环执行的效果,这时候就需要前面提到的调试功能了,直接跳出循环,执行循环后面的代码。当然也可以跳到循环前面的代码执行,下面以对VC,Windbg和Linux的gdb三个调试器分别进行说明。

1.VC调试器的方法

VC对源代码级的调试支持得还是相当的好,特别是应用层代码的调试,而且执行到指定代码行的功能也是相当的简单,如下图所示。

将鼠标放在当前执行的代码行位置,这时会看到提示,说可以拖动箭头到想执行的代码行位置,然后就可以继续执行了。

2.Windbg方法

windbg可以用两种方法来达到这个目的。

第一种方法,如下图所示。

将焦点定位到你想执行的代码行,然后选择Edit菜单,选择“Set Current Instruction”子菜单即可,效果和VC一样。

第二种方法要麻烦一些,如下图所示。

可以通过修改eip的地址来达到执行指定代码行的功能,对x64位系统来讲,程序指针寄存器是rip,32位是eip,可以先执行r命令,查看寄存器的状态,如上图所示。然后切换到汇编模式,查看你想执行的那一行代码的地址,然后执行r rip=address命令来达到相同效果。

3.Linux gdb

gdb的功能很强大,要达到这个效果也很简单,如下图所示。

执行jump命令即可,如上图所示,想要到16行去执行,执行jump 16就可以了。

时间: 2024-11-10 00:16:43

VC,Windbg,gdb执行到指定代码行方法的相关文章

python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)

1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: 1 #coding: utf-8 2 import os, re 3 4 # 代码所在目录 5 FILE_PATH = './' 6 7 def analyze_code(codefilesource): 8 ''' 9 打开一个py文件,统计其中的代码行数,包括空行和注释 10 返回含该文件总行数,注释行数,空行数的列表 11 ''' 12 total_line = 0 13

opensips/kamailio gdb代码调试方法详解

 要对kamailio/opensips进行单步调试,就需要先了解其代码的结构及运行方式,kamailio/opensips使用Reactor和Proactor结合的IO网络模型,使用主进程负责监听网络,当有连接产生或首包到达时,就通过pipe将文件描述符发送给worker进程,worker进程就会负责此连接的数据取读.业务处理.数据发送等事情,然后再次等待此socket事件.当我们想要调试一段代码时,就先确认这段代码是运行在什么类型的进程中,通常用于处理SIP逻辑的代码都是在worker进

第六篇 SQL Server安全执行上下文和代码签名

本篇文章是SQL Server安全系列的第六篇,详细内容请参考原文. SQL Server决定主体是否有必要的执行代码权限的根本途径是其执行上下文规则.这一切都可能复杂一个主体有执行代码的权限,但是却没有访问代码中基础对象的权限,比如表中的数据.这一篇将探讨SQL Server的执行上下文.所有权链接和模拟,以及告诉你如何通过T-SQL代码控制访问数据.执行上下文当用户执行一个存储过程或其他数据库代码,SQL Server检查以确保用户不但有执行过程权限,而且有代码访问的数据库对象的权限.如果没

SQL Server安全(6/11):执行上下文与代码签名(Execution Context and Code Signing)

在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Server里的安全功能充分利用,不用在面对特定威胁,不能保护你数据的功能上浪费时间. SQL Server决定主体是否有需要的许可执行代码的基本方式是它的执行上下文角色.这都是复杂的可能性,主体有执行代码的许可,但没有代码访问的潜在对象的许可,例如表里的数据.这篇文章会探寻SQL Server执行上下

如何统计代码行数

如何统计代码行数 linux下提供了很多实用工具,甚至在安卓上,都有移植的busybox包含这些工具. 根据KISS理念,这些工具的功能很单一.但这些工具组合起来,就可以很方面的统计代码量了. 统计代码行数 流程为:首先使用find命令找到所有后缀名符合规则的源代码文件,之后使用wc命令统计行数.文件数可能过多,为防止出错使用xargs命令分割参数列表,最后得到的结果可以使用sort排序 统计所有c源代码行数的命令:find -name *.c | xargs wc -l |sort -r.结果

当cpu飙升时,找出php中可能有问题的代码行

当你发现一个平时占用cpu比较少的进程突然间占用cpu接近100%时,你如何找到导致cpu飙升的原因?我的思路是,首先找到进程正在执行的代码行,从而确定可能有问题的代码段.然后,再仔细分析有问题的代码段,从而找出原因. 如果你的程序使用的是c.c++编写,那么你可以很容易的找到正在执行的代码行.但是,程序是php编写的,如何找到可能有问题的代码行呢?这个问题就是本文要解决的问题. 背景知识: 如果你对c语言不熟悉的话,可以略过,直接看 示例演示. 大家都知道php是一个解释性语言.用户编写的ph

如何快速定位 Linux Panic 出错的代码行

问题描述 内核调试中最常见的一个问题是:内核Panic后,如何快速定位到出错的代码行? 就是这样一个常见的问题,面试过的大部分同学都未能很好地回答,这里希望能够做很彻底地解答. 问题分析 内核Panic时,一般会打印回调,并打印出当前出错的地址: kernel/panic.c:panic(): #ifdef CONFIG_DEBUG_BUGVERBOSE /* * Avoid nested stack-dumping if a panic occurs during oops processin

统计python代码行数

addhosts项目已接近尾声,我很想知道我们写了多少行代码. 一.需求 统计源码目录下py文件的代码行数. 二.脚本分析 获取指定目录下所有的.py文件,对文件进行遍历: 读取每个文件,对文件内容进行遍历,过滤掉空行和注释: 三.实现及结果 #coding:utf-8 import os class StatLines(object):     def __init__(self,path):         self.path = path     def stat_lines(self):

python统计代码总行数(代码行、空行、注释行)

我们在工作或学习代码的过程中,经常会想知道自己写了多少行代码,今天在项目环境写了个脚本统计了项目代码的数量. 功能: 1.统计代码总行数 2.统计空行数 3.统计注释行数 # coding=utf-8 import os #定义代码所在的目录 base_path = '/home/yhl/workspace/xtp_test' #在指定目录下统计所有的py文件,以列表形式返回 def collect_files(dir): filelist = [] for parent,dirnames,fi