程序调试

xcode lldb gdb调试

拥有回忆 提交于 2020-02-29 08:12:50
应用调试: 1 xcode gdb/lldb调试命令 命令 解释 break NUM 在指定的行上设置断点。 bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。 clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。 continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。 display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。 file FILE 装载指定的可执行文件进行调试。 help NAME 显示指定命令的帮助信息。 info break 显示当前断点清单,包括到达断点处的次数等。 info files 显示被调试文件的详细信息。 info func 显示所有的函数名称。 info local 显示当函数中的局部变量信息。 info prog 显示被调试程序的执行状态。 info var 显示所有的全局和静态变量名称。 kill 终止正被调试的程序。 list 显示源代码段。 make 在不退出 gdb 的情况下运行 make 工具。 next 在不单步执行进入其他函数的情况下,向前执行一行源代码。 print EXPR 显示表达式 EXPR 的值。 print-object 打印一个对象 print (int) name 打印一个类型 print

浅析VS2010反汇编

China☆狼群 提交于 2020-02-29 07:04:36
第一篇 1. 怎样进行反汇编 在调试的环境下,我们能够很方便地通过反汇编窗体查看程序生成的反汇编信息。 例如以下图所看到的。 记得中断程序的运行,不然看不到反汇编的指令 看一个简单的程序及其生成的汇编指令 #include<stdio.h> #include<windows.h> const long Lenth=5060000/5; int main(){ while(true){ for(long i=0;i<Lenth;i++){ ; } Sleep(10); } } 汇编窗体 2. 预备知识 : 函数调用大家都不陌生,调用者向被调用者传递一些參数,然后运行被调用者的代码,最后被调用者向调用者返回结果,还有大家比較熟悉的一句话。就是函数调用是在栈上发生的,那么在计算机内部究竟是怎样实现的呢? 对于程序,编译器会对其分配一段内存。在逻辑上能够分为代码段。数据段,堆,栈 代码段:保存程序文本。指令指针EIP就是指向代码段。可读可运行不可写 数据段:保存初始化的全局变量和静态变量,可读可写不可运行 BSS:未初始化的全局变量和静态变量 堆(Heap):动态分配内存,向地址增大的方向增长。可读可写可运行 栈(Stack):存放局部变量。函数參数,当前状态。函数调用信息等, 向地址减小的方向增长 。很很重要,可读可写可运行 如图所看到的 寄存器 EAX :累加(Accumulator

Eclipse远程调试Tomcat

大城市里の小女人 提交于 2020-02-29 05:56:11
1.Linux服务器中在Tomcat的catalina.sh文件添加如下内容: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"(不要换行,要在同一行) 参数说明: -Xdebug : 启用调试模式 -Xrunjdwp<sub-options> : 加载JVM的JPDA参考实现库 transport=dt_socket :Socket连接,可选dt_shmem 通过共享内存的方式连接到调试服务器 address=8000 :调试服务器监听的端口 server=y : 是否是服务器端,n为客户端 suspend=n : 启动过程是否加载暂停,y为启动时暂停,方便调试启动过程 2.启动Tomcat 如果启动成功,tomcat日志文件(catalina.out)中会有如下输出: Listening for transport dt_socket at address: 8000 3.使用Eclipse远程调试 在代码内右键-->Debug As-->Debug Configurations...打开以下界面. 在Remote Java Application内新建并输入相关的信息后点击Debug就可以启动调试了。 接着就可以在代码中打好断点调试了。

MyEclipse远程调试Tomcat

廉价感情. 提交于 2020-02-29 05:55:48
MyEclipse远程调试Tomcat 程序就是这么一个神奇的东西,有时你的一个项目,在本机上运行得还是好好的,可当你把这货放到了服务器上,同样的条件就是结果不一样。于是就灰常想看一下程序在远程运行时候的状态,希望让程序在远程运行,还可以在本机打断点跟一下,这就用到了用eclipse远程调试Tomcat。记得以前好久之前研究了一下,怎么也没弄成功。最近终于OK啦。 一、调试准备 首先得有一个在远程服务器上的Tomcat与一个在本地的Eclipse,还有就是一个已经部署在远程Tomcat上并且源代码在本地Eclipse上的程序。当然如果木有远程的服务器就用自己的本机当远程的服务器试下也行哈。 二、配置tomcat 1、如果远程服务器是Windows NT的环境,那就在%CATALINE_HOME%/bin 下建立debug.bat文件,在里面贴入如下内容: set JPDA_ADDRESS=8888 set JPDA_TRANSPORT=dt_socket set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 startup 其中的两处8787是要启用的远程端口

JVM远程调试功能

房东的猫 提交于 2020-02-29 05:54:22
有时候想调试线上的程序 可以启用远程调试功能 在本地调试远程代码。 远程JVM启用调试模式 /usr/local/jdk/bin/java -server -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=128m -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1506 -jar /home/web/api-1.0-SNAPSHOT/lib/api-1.0-SNAPSHOT.jar --spring.config.location=file:/home/web/api-1.0-SNAPSHOT/conf/    -XDebug 表示虚拟机启用调试功能 -Xrunjdwp 加载JDWP transport 调试程序JVM使用的进程之间通讯方式 dt_socket socket通讯 server=y/n JVM是否需要作为调试服务器执行 address 调试服务器监听的端口号 suspend=y/n 调试客户端建立连接之后启动虚拟机 JVM启动之后用验证监听的端口号是否生效了 netstat -anp | grep 1506 本地调试配置 然后 debug 启动 访问远程服务器某个服务 在本地就支持打断点调试了。 欢迎关注我的微信公众号《笑笑笑技术圈》

远程调试方式

烂漫一生 提交于 2020-02-29 05:53:37
使用特定JVM参数运行服务端代码 要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的JVM参数,这些参数是: 1 -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port} 其中的${debug_port}是用户自定义的,为debug端口,本例以5555端口为例。 transport: 表示信息传递的连接方式, 其中,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台。 server: server=y 表示是监听其他debug client端的请求 address 表示等待调试的连接网络端口 suspend 表示是否在启动目标虚拟机后挂起虚拟机,如果要调试启动过程,请使用y 参数说明: address为远程调试的端口号,目前我们服务器上8412是一个开放的端口(staging环境已验证) -Xrunjdwp 使用jdwp( Java Debug Wire Protocol)进行调试 transport=dt_socket 使用socket方式进行连接,还可以使用其他通信方式如(dt_shmem 共享内存) suspend=n JVM监听address端口传来的信号时不挂起JVM中运行的进程

Visual Studio Code 如何编写运行 C、C++ 程序?

时光怂恿深爱的人放手 提交于 2020-02-29 04:55:16
0. 前言 VS Code 是微软发布一款跨平台的源代码编辑器,其拥有强大的功能和丰富的扩展,使之能适合编写许多语言。 本文面向初学者(但不是纯小白),分享一点我配置C/C++的经验。 本文所有内容均可从VS Code的官方文档: C++ programming with Visual Studio Code 以及各个扩展的文档中获得,并且他们还会进行更新。 我的环境:64位Windows 10。VS Code的配置文件在Linux下应该也是通用的,但需要修改路径等部位配置。 1. 环境的准备 VS Code的官网和下载、安装最新的版本。VS Code只是一个编辑器,并不是IDE(集成开发环境)。不含编译器(和许多其它功能),所以编译器要自己安装好。如果想用其他工具链或单纯用官方扩展。 然后下载安装MinGW-w64,其实MinGW和MinGW-w64只是名字像,它们是两个不同的项目。为了方便,本文中的MinGW指的其实都是MinGW-w64。MinGW本身已经很久没有更新了,故 不推荐 。下载以下两个程序(都要): LLVM Download Page 在此页面下载Clang。选Pre-Built Binaries中的Clang for Windows (64-bit), 不需要下.sig文件 MinGW-w64 - for 32 and 64 bit Windows

Linux 下 vscode 断点调试

断了今生、忘了曾经 提交于 2020-02-29 02:04:44
一、环境搭建 1.下载 vscode 2.安装 gcc 和 g++ 3.然后在 vscode 的 Extensions 下安装以下插件: C/C++、Code Runner、C/C++ Snippets、EPITECH C/C++ Headers、File Templates、GBKtoUTF8 GBK、Include Autocomplete。 其中 C/C++ 和 Code Runner 必须要装。 此时,已经可以断点了。接下简单介绍已下怎么断点调试。 二、断点调试介绍 1.创建 test.c 文件 内容如下: #include<stdio.h> main(int argc, char const *argv[]) { int aa; printf("hello word \n"); scanf("%d",&aa); return 0; } 2.创建 launch.json 文件 直接按 F5,弹出以下画面: 选择 C++(GDB/LLDB) 然后选择默认配置。 这时候就会生成 launch.json 文件: { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0",

开发和调试第一个 LLVM Pass

孤人 提交于 2020-02-28 22:37:59
1. 下载和编译 LLVM LLVM 下载地址 http://releases.llvm.org/download.html , 目前最新版是 6.0.0,下载完成之后,执行 tar 解压 llvm 包: tar -xzvf llvm-6.0.0.src.tar.xz 再下载 Clang 解压: tar -xzvf cfe-6.0.0.src.tar.xz 将 cfe-6.0.0.src 目录复制到 llvm-6.0.0.src/tools,重命名为 clang。通过 brew 安装 cmake: brew install cmake 然后在命令行下切换到 llvm-6.0.0.src 目录,新建 build 目录,切换到 build 目录执行 cmake 生成配置文件,命令如下: mkdir build cd build cmake -G Xcode CMAKE_BUILD_TYPE="Debug" .. 执行完成之后,可以看到 Xcode 的工程文件 LLVM.xcodeproj,打开工程文件,会提示是否自动创建 Schemes,如图所示: 点击 Manually Manage Schemes 手动创建,添加 ALL_BUILD,如图所示: 然后在 Xcode 上进行编译,编译过程比如慢,可能得二十分钟到半小时左右,全部编译完文件会在 11G 左右。 2. 编写 Pass 代码

单片机怎么和手机通信,你知道吗?

被刻印的时光 ゝ 提交于 2020-02-28 07:54:27
在用单片机做产品的时候,难免会用到单片机和手机通信,能和手机通信的方案有很多这种,像常用的蓝牙,Wifi等等,当然还有更高层次的通过互联网,一般我们使用比较多的就是用蓝牙和手机通信,我们今天就给大家说一下手机蓝牙如何和手机通信。 废话不多说直接转入正题。 一、准备: 1.首先得有一款支持串口通信的单片机,我们使用的是51单片机。 51最小系统 2.蓝牙模块(HC06) HC06(图片来源于网络,如涉权请联系删除) 3.下载个蓝牙串口调试助手 蓝牙串口调试助手图标 蓝牙串口调试助手界面 4.蓝牙转串口模块(主要用于显示接受到的数据,在单片机开发应用中可以没有) 5.电脑上安装一个串口调试助手。 6.若干焊锡,杜邦线,焊台,电脑一台,手机一部等。 二、调试工作 1.调试蓝牙模块 用杜邦线把蓝牙转串口模块和蓝牙模块连接起来,对应引脚链接分别为 VCC-->VCC GND-->GND TXD-->RXD RXD-->TXD 这里一定要注意TXD和RXD一定不要接反,串口的波特率和蓝牙模块波特率要对应,否则不能使用 打开手机上的软件串口调试助手,在下面键盘上输入一个字符,点击发送,然后在电脑显示屏上就会看到该字符,那么调试成功。 三、连接工作 把蓝牙模块和单片机模块连接起来,然后打开蓝牙串口调试助手,连接上蓝牙模块(初次连接可能需要密码,默认初始密码1234)发送数据