1. 首先安装gdbserver apt-get install gdbserver 2. 编译-g 程序 gcc -g test_gdb.c -o test_gdb 源码如下: #include "Util.h" void p1() { ; char *p; *p = '; printf("%p %c",p,*p); do { j++; }); } void p2() { ; ) { j = j + j*j; } } int main(int argc,char…
什么是gdb 它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C.C++代码. 它主要可以做4件事情: 随心所欲地启动你的程序. 设置断点,程序执行到断点处会停住.(断点可以是表达式) 程序被停住后,可以查看此时程序中发生的事. 动态改变程序的执行环境. GDB远程调试原理图 如图上所示,我们需要使用gdbserver依附到我们要调试的进程上,gdb通过adbd和手机上的gdbserver 进行socket通信. 远程调试实战 在手机上启动gdbserve…
知识共享许可协议本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/gdb-bug 本博客同步在http://www.cnblogs.com/papertree/p/6298774.html 在用qemu + gdb 调试linux内核时,遇到一个gdb的bug:"Remote 'g' packet reply is too long" ,记录一下. 1. 实验环境 1. qemu 版本: luzeshu@l…
原文:http://blog.csdn.net/xinfuqizao/article/details/7955346?utm_source=tuicool 什么是gdb 它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C.C++代码. 它主要可以做4件事情: 随心所欲地启动你的程序. 设置断点,程序执行到断点处会停住.(断点可以是表达式) 程序被停住后,可以查看此时程序中发生的事. 动态改变程序的执行环境. GDB远程调试原理图 如图上所示,我们需要使用g…
Ubuntu下CodeBlocks更改调试终端   Ubuntu下的CodeBlocks自带的调试终端xterm不能进行复制粘贴操作,更换调试终端就可以解决了,就是把ubuntu下的gnome-terminal用作调试终端,修改后就行了.   具体操作如下:   更改调试终端:    使用gnome-terminal作为调试终端.   只要Setting==>Environment...==>General Setting==>Terminal to lanuch console pro…
gdb调试器时一款GNU组织开发.发布的UNIX/Linux环境下的程序调试工具,没有图形界面,但功能强大. GDB使用流程: 先编写一个测试文件gdbTest.c 保存后用gcc对文件进行编译,需要加上 -g 参数,否则不能使用gdb进行调试.      gcc gdbTest.c -o gdbTest -g 查看文件 在gdb中键入“l”(list)就能够查看载入的文件. 在不输入其他参数的情况下l 打开的是包含main()函数的文件,如果要打开其他文件可以在l 后面输入文件名作为参数. 也…
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 先看一张原理图: 我是 Linux 和 Android 双料 0 基础,目前对 gdb 了解的很浅显.(注意:在 Android 上执行的命令,需要在 adb shell 下执行.) ①      打开命令终端(Ctrl + Alt + T),输入 adb shell.在 Android 的 data 目录下新建一个目录,如 dog_ld. ②      将 gdbserver 和要调试的程序从 Linu…
在看雪上回答的问题,有人问在WinDbg下断KiDebugRoutine或者KdEnterDebugger函数会引发蓝屏!因为是在调试Windows的内核调试引擎,我给出的解决办法是用不依赖Windows的内核调试引擎对其进行调试,在以前分析Windows的启动过程时用到过ida的远程调试,在Windows内核调试引擎还没初始化的时候就对系统进行调试,这里就用到了ida的远程调试来解决. ida--->Debugger--->Attacth---->Remote GDB Debugger…
参考: http://www.erchashu.com/wiki/eclipse-cdt-gdb-arm-app-cross-debug 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接.使用 GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能.调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在. 就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作: 普通列表…
原博地址:http://blog.csdn.net/dfdsggdgg/article/details/50730311 1.center下,在startup.sh文件首行中添加如下语句 declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"(不要换行,要在同一行) Ubu…
上次写了几个native程序,想着如何调试,经过一阵子搜索和测试,终于完成了.有几个关键点: 1 gdb和gdbserver 因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbserver gdbserver的是在 android-ndk-r9\prebuilt\android-arm\gdbserver 这个目录下 gdb 是在 android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bi…
前  言 关于GDB工具 GDB工具是GNU项目调试器,基于命令行使用.和其他的调试器一样,可使用GDB工具单步运行程序.单步执行.跳入/跳出函数.设置断点.查看变量等等,它是UNIX/LINUX操作系统下强大的程序调试工具.GDB支持多种语言,包括Ada.汇编.C/C++.D.Fortran.GO.Objective-C.OpenCL.Modula-2.Pascal和Rust. GDB具有一种"远程"模式,此种模式多半是在为嵌入式系统进行调试时使用,远程操作指的是:GDB在一部机器内…
1 前言 使用海思平台上(编译工具链:arm-himix200-linux)交叉编译 GDB 工具(使用版本8.2,之前用过10.2的版本,在编译 gdbserver 遇到编译出错的问题,因为关联了其他静态库等,尝试解决,但是遇到了一些其他问题,因为时间问题折腾了一段时间就放弃使用10.2的版本了). 通过使用 gdb+gdbserver 远程调试目标板,之后可以通过 VSCode 配置好后实现和 IDE 集成开发环境一样的比较直观方便调试. 2 编译 2.1 前期准备 1)下载 gdb(网上很…
基础的缓冲区溢出实践通常需要确定运行状态下程序中的某些局部变量的地址,如需要确定输入缓冲区的起始地址从而获得注入缓冲区中的机器指令的起始地址等.在 Linux 环境下,可通过 gdb 对程序进行动态调试,从而获得程序运行状态下的信息( 关闭 ALSR 机制 ),基础的 gdb 操作可参见笔者的文章Linux下编辑.编译.调试命令总结——gcc和gdb描述.使用 gdb 可以方便的获取程序动态运行状态下的信息,但通过 gdb 动态调试获取的诸如缓冲区的起始地址等信息可能与程序实际运行时的信息并不相…
原博链接:http://blog.csdn.net/sunyujia/article/details/2614614   今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/archive/2008/03/23/2211109.aspx 我的朋友们普通反应看完后觉得不知所云,可能是我写的太简单,下面步入正题.        什么是远程调试,就是在A机器上利…
最近在学着编写一个操作系统的简单内核,需要debug工具,我们这里使用gdb来进行调试,由于虚拟机运行和本机是两个部分,所以使用 gdb 的远程调试技术,这里对 gdb 常见调试以及远程调试方式做一个总结. 远程调试 先对在调试操作系统内核时用到的命令做一个说明(这里省略了一部分makefile的内容): 为了方便调试,将debug所用到的命令做一个简单说明 -- # -s 这个参数指的是启动时开启1234端口等待gdb连接 # -S 是指是启动时不自动开始运行,等待调试器的执行命令 debug…
在Ubuntu下php的缺省设置是不显示错误信息的,如果程序出错会显示“无法处理此请求的错误提示”,这在开发环境下非常不方便. 其实我们只要编辑下apache的配置文件就好 1.我的apache 配置文件目录是/etc/apache2/apache2.conf sudo vim /etc/apache2/apache2.conf 再最后加入以下两行 php_flag display_errors        on php_value error_reporting       2039 2.重…
今天把android的开发环境从windows平台切换到了ubuntu上. java jdk android-adt android-ndk都下好,环境变量都配好之后, 在调试程序的时候,出现设备没有权限访问,在shell中输入adb devices 出现 ?????    no permittion 一看这个,就蒙了.在网上谷歌百度了半天, 出现的答案,感觉大家都是copy过来的,不了解如何真正的去解决这个 问题,也许这些解决方法在某些情况下,有效,而我拿过来,在我这里 完全没有用. 没办法了…
平台: redhat9.0 下载 gdb-5.3.tar.gz 解压 gdb-5.3.tar.gz: #tar vzxf gdb-5.3.tar.gz 配置文件# ./configure - target=arm-linux- --prefix=/usr/local/arm-gdb -v # make #make install #vi  /etc/.bash_profile //如果没有,试下/root/.bash_profile 中添加一行:PATH=$PATH; /usr/local/ar…
在较新的os x中使用gdb调试程序会发生 Unable to find Mach task port 之类的错误,这是由于新的os x内核禁止未授权的程序随意控制其他进程,如果不用root权限的话,我们还可以使用程序签名的方式来解决这个问题.(谁又想老是以root权限调试普通程序呢?) 依次进入 应用程序->实用工具,打开钥匙串访问: 选择菜单 钥匙串访问->证书助理->创建证书,第一个步骤如下设置: 然后一直next,最后一个设置如下设置: 最后回到钥匙串访问程序主界面,鼠标右键选中…
参考原贴,其中编译命令有略微改动. 第一步:准备编译环境 #sudoapt-get update #-dev libspeex-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev #sudo ldconfig 第二步:安装x264和FFmpeg要用到的汇编器yasm #.tar.gz #…
VS的debug功能非常强大,相比而言linux上的图形化调试一直不是很好用. 如果可以使用VS来调试linux程序,应该是一件比较愉快的事情. 这在2015中变得可能,因为从2015开始VS支持Android.iOS开发和调试. 虽然并没有正式提供linux程序的调试支持,但是可以通过一些技巧达到 微软开源了MIEngine项目,通过Machine Interface ("MI")与gdb.lldb交互. VS通过该MIEngine即可调试linux程序(visual studio…
[编辑]第一步:准备编译环境 .tar.bz2 -2245/ ./configure -linux-i586.tar.gz 解压后得到jre1.7.0_17目录 最后通过java -version检查是否安装成功. [编辑]第七步:安装eclipse 直接解压即可: 给eclipse添加桌面快捷方式:右键选择Make Link:然后右键Move to 选择Desktop [编辑]第八步:利用eclipse编译ffmpeg 启动eclipse后, File - New - Project 选择 "…
前提:Windows环境tomcat是以catalina.bat方式而非Windows服务形式启动(两者所使用的JAVA配置及JVM参数会有差异). 服务器段设置 方法1:修改CATALINA_OPTS 修改 catalina.bat文件,添加:Set  "CATALINA_OPTS=-Xdebug  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" 参数说明: -Xdebug                 …
1. 打开 core dump 查看是否打开 ulimit -c 如果输出0, 说明没有打开. 方法一:使用命令 ulimit -c unlimited 可以打开,但是只对当前终端有效, 方法二: 配置 /etc/profile 文件 sudo gedit /etc/profile 在最后添加一行 ulimit -S -c unlimited > /dev/null 2>&1 可以始终打开core dump , unlimited 可以改为具体的数字,比方说 1024 来限制 core…
1.  从 https://github.com/derekparker/delve.git 下载delve压缩包delve-master.zip. 2. 使用 winscp 工具将delve-master.zip 远程到 linux机器里面. 3. 解压压缩包:unzip delve-master.zip 4. 复制压缩包到指定的路径下,否则编译会出错:cp -r ./delve-master /root/go/src/github.com/go-delve/delve/ 5. 进入路径下面:…
转自:http://blog.csdn.net/wh_19910525/article/details/39313457 Ubuntu的机子上,插上USB2COM线,准备开工. 检查USB2COM在本机上的tty文件名,输入命令:   $ dmesg 注意到尾部有类似于如下信息   [ 4858.701759] usb 1-1.1: new full-speed USB device number 7 using ehci_hcd [ 4858.802660] ftdi_sio 1-1.1:1.…
第一步: gedit /etc/mysql/my.cnf找到bind-address = 127.0.0.1 注释掉这行,如:#bind-address = 127.0.0.1 或者改为: bind-address = 0.0.0.0 允许任意IP访问: 或者自己指定一个IP地址. 重启 MySQL:sudo /etc/init.d/mysql restart 第二步: 授权用户能进行远程连接 grant all privileges on *.* to root@"%" identi…
第一步: vim /etc/mysql/my.cnf找到bind-address = 127.0.0.1 注释掉这行,如:#bind-address = 127.0.0.1                   //只允许本地访问 或者改为: bind-address = 0.0.0.0                          //允许任意ip访问 或者自己指定一个IP地址. 重启 MySQL:sudo /etc/init.d/mysql restart 第二步: 授权用户能进行远程连接…
登陆公司远程postgresql:psql -h <host or remote id> -p <port> dbdame 如: psql -h  aliyunsql_addr -p 端口 my_psql_db…