调试---调试正在运行的程序

void fun()
{
    int b = 0;
    b++;
}

int main(int argc, char** argv)
{
    while (1)
    {
        int a = 0;
        a++;
        fun();
    }
}

main.cpp

1. 运行上面程序                               ./main

2. 查看上面程序进程号, 假设为1234     ps aux | grep main 

3. gdb调试, attach上面进程               gdbtui  main  1234          (gdb  [程序]  [进程号])

4. 下面就和正常调试一样了,设断点       b  [行号]

5. 调试开始                                     n

注意: 因为程序已经开始运行了, 不用在输run命令了.

在调试正在运行的程序, 如果想知道程序停在哪里了, 用如下步骤

1. 运行上面程序                               ./main

2. 查看上面程序进程号, 假设为1234     ps aux | grep main 

3. gdb调试, attach上面进程               gdbtui  main  1234          (gdb  [程序]  [进程号])

4. 查看程序停在哪里了                      bt

时间: 2024-08-04 21:18:19

调试---调试正在运行的程序的相关文章

使用gdb进行程序调试1-在GDB中运行程序

在GDB中运行程序 一.启动程序 如果在启动gdb时没有指明程序,可以使用命令file或exec-file加载程序: run(r): run(r)命令使程序启动,可以在run命令中指明程序参数:值得注意的是,首次运行run后,如果再次执行run并且不带参数,会以之前的参数运行程序. set args: 指定程序的参数.set args后,run可以不带参数而以指定的参数运行程序.如果set args不太参数,清楚程序参数,执行run后程序不太参数运行. 在加载程序后,如果程序重新编译,gdb会根

linux(ubuntu12.04)下手机真机调试eclipse上的android程序

模拟器太慢了,而且在模拟器上运行程序的效果毕竟还是跟在真机上有点区别的,所以建议大家尽量使用真机调试.把android手机通过usb线连接至电脑,之后步骤如下: 1. 在/etc/udev/rules.d/目录下新建一个51-android.rules文件,文件内容为: SUBSYSTEM == "usb",ENV{DEVTYPE} == "usb_device",MODE = "0666" 2.$ sudo chmod a+rx /etc/ud

IDEA调试服务器上部署的程序

提出问题: 一个程序,部署在自己的电脑上,debug调试,相信大家都会,但是,如果我想debug调试非本地部署的程序怎么办呢.比如测试服务器上部署的程序. 其实这样的需求也是经常有的,比如一个大型的项目有很多模块,也有很多自己的或外部的依赖,不可能在自己电脑上整个都搭建一整套完整的环境.先不管有多复杂,有时候公司的电脑配置再不给力,部署一个大型程序更是雪上加霜.通常这样的程序都是直接部署到专门的开发或测试环境里面.很少在自己电脑上部署测试.再加上运用像jenkins这样的自动化的部署工具,部署只

使用ndk-gdb调试AS下的Native程序

1.Create Android Studio Project (1)新建一个Empty Activity工程:TestNDK (2)在工程的主Activity中加入对.so的引用.这步很关键,将System loadLibrary放入主Activity,是让程序启动后立刻加载.so,否则后面调试时,会有些麻烦 static { // Load native library to invoke chreographerCallback(). System.loadLibrary("DebugND

Windows远程调试Linux上的C++程序:Eclipse+MingW+Samba+GDBserver

转自:http://www.heimizhou.com/windows-remote-debug-linux-c-plus-plus.html 最近有一个需求,就是需要在Windows上远程调试Linux上的C++程序,然后我就从网上搜集各种方法,但是发现很多方法中是先在Windows上编译程序,然后再从Linux上编译程序,最后进行远程调试,这种方法使我的调试不能进入源代码,后来经过尝试发现只需要在Linux上编译程序即可.下面从三个方面:需要安装的软件.安装与配置.配置远程调试,来介绍一下我

Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)

以前写过一个程序,发现用断点调试的时候,一步步的运行,程序是可以的,但是去了断点程序就出现了问题. $(document).ready(function(){ var arra=new Array(); $.post("/getdata",null,function(data){ for(var i=0;i arra.push(data); } }); $("#item").val(data[0]); }); 发现自己犯了一个错误.首先,看一下$.post与$.aj

cordova构建和运行应用程序(安卓)

要构建和运行应用程序,需要为要定位的每个平台安装sdk. 检查您是否满足构建平台的要求的命令: cordova requirements 1.安卓平台指南: cordova for Android需要安装在OSX,Linux或Windows上的Android SDK. 安装要求: 1.java开发工具包(JDK) 下载安装好JDK之后,在终端输入JAVAC,如果跳出如下提示,说明JAVA环境已经配置好了 2.Android SDK 在这里,我选择安装Android Studio,以便于运行和调试

VS2008运行MFC程序,提示microsoft incremental linker已停止工作解决方法

其实这边是因为设置有问题,具体的解决方案如下: 第一步:点击项目->"你的文件"属性->配置属性->链接器->启用增量链接   将  是(/INCREMENTAL)改为 否(/INCREMENTAL:NO) 第二步:点击项目->"你的文件"属性->配置属性->C/C++  将调试信息格式改为程序数据库(/Zi) 改完之后,重新调试一下程序,是不是问题已经解决了? 以下附上截图: VS2008运行MFC程序,提示microso

在linux下安装eclipse以及运行c++程序的安装步骤

1.       下载jre,eclipse,cdt 其中jre是java运行环境,eclipse需要先装jre,才可能运行,cdt是在eclipse中运行c\c++程序的插件. 下载jre 网址是:http://www.oracle.com/technetwork/java/javase/downloads/index.html,点击JRE下载(如下图) 选择"Aceept License Argeement" (如上图) 点击"jre-7u21-linux-i586.bi