当前位置:首页 » 编程软件 » 编译调试命令

编译调试命令

发布时间: 2022-08-17 19:51:32

A. 如何在Windows下编译或调试Mysql

用vs code 就可以了。

Visual Studio Code

Visual Studio Code(简称VS Code)是由微软开发的,同时支持Windows、linux和macOS操作系统的开源文本编辑器。它支持调试,内置了Git 版本控制功能,同时也具有开发环境功能,例如代码补全(类似于IntelliSense)、代码片段、代码重构等。该编辑器支持用户自定义配置,例如改变主题颜色、键盘快捷方式、编辑器属性和其他参数,还支持扩展程序并在编辑器中内置了扩展程序管理的功能。


安装LLDB

LLDB是LLVM编译器的一部分,推荐使用Homebrew安装LLVM工具集,不建议使用系统自带的LLDB,安装前必须先创建证书否则无法安装,步骤如下:

创建完成后,开始安装LLVM

brew install llvm --with-python@2--with-lldb

安装插件

VS Code自带有debug功能,这里我推荐使用LLDB Debugger插件。

接下来,为项目配置调试参数。

配置调试参数

使用VS Code打开MySQL源码目录,在侧边栏选择debug栏目,添加配置,program输入需要调试的程序路径,这里选择你编译好的mysqld路径,args输入程序启动所需的参数,通常会指定mysqld的配置文件。这样就配置好了,是不是很简单。

启动调试

点击启动按钮,启动后如果没有设置断点会mysqld会正常启动,如果触发了断点会如下图显示。

整个调试窗口基本分为六部分,所有的调试操作都在这里完成:

1:显示变量信息

2:设置重点关注的变量

3:显示调用栈信息

4:设置断点信息,在代码行号前也可以设置断点

5:代码显示区域,上方是调试按钮,包括 continue/stepover/step in/step out/restart/stop

6:调试终端输入输出区


断点设置

在代码行号前点击即可在该行为设置断点,也可以根据条件设置断点。以设置ConditionalBreakpoint为例,当程序启动后会按照你设置的条件表达式判断是否触发断点。

Conditional Breakpoint这种方式用在目标变量达到某条件时触发断点,其余则跳过继续执行。比如:设置变量等于目标表名时触发断点,其余表则跳过,相对函数名断点省去很多手工跳过操作。

远程调试

假如你想调试远程Linux服务器上的MySQL上面的方法就不合适了,这时需要远程调试。lldb和gdb都支持远程调试,这里以lldb为例。

需要先在远程主机上安装lldb,使用yum安装,源地址在这里http://mirror.centos.org/centos/7/sclo/x86_64/rh

remote$ yum install -y llvm-toolset-7

安装完成后,启动lldb-server

remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform --listen"*:9191"--server

接下来,在VS Code调试界面中新增配置项。

{

"type":"lldb",

"request":"attach",

"name":"Remote attach",

"program":"~/mysql5626/usr/local/mysql/bin/mysqld",

"pid":"<target_pid>",

"initCommands": [

"platform select remote-linux",

"platform connect connect://<remote_host>:9191"

],

"sourceMap": {

"/export/home/pb2/build/sb_0-15908961-1436910670.17/mysql-5.6.26":"/Users/hongbin/workbench/mysql-server"

}

},

program:本机也要拷贝一份目标程序,加载

pid:填写远程主机的mysqld进程id

sourceMap:填写mysqld编译的代码路径与本机代码库路径的映射,这样调试时代码才可以和程序关联在一起看

注意:记得调试前将代码切换到与目标程序版本一致的branch

B. Editplus如何编译调试程序

这个是需要配置的:
在配置EditPlus之前是先将java的运行环境安装且调试好,然后进入EditPlus,从菜单“工具(Tools)”; “配置用户工具...”进入用户工具设置,选择“组和工具条目”中的“Group 1”,点击面板右边的“组名称...”按钮,将文本Group1”修改成“Java编译程序”,点击“添加工具”按钮,选择应用程序,
然后就是修改属性:
1. 添加编译功能
“菜单文本”里的内容修改为“Javac”;“命令”选择安装JDK后的Bin目录中的编译程javac.exe,我的JDK 安装路径为“Crogram FilesJDKj2sdk1.4.2_08”,那么此路径为“CrogramFilesJavajdk1.5.0injavac.exe”;
“参数”选择“文件名”,即显示为“$(FileName)”;
“初始目录”选择“文件目录”,显示为“$(FileDir)”;选择“捕获输出”复选框
2. 添加执行功能
“菜单文本”里的内容修改为“Java”;
“命令”选择安装JDK后的BIN目录中的编译程序java.exe,路径为“Crogram FilesJavajdk1.5.0injava.exe”;
“参数”选择“不带扩展名的文件名”,即显示为“$(FileNameNoExt)”;
“初始目录”选择“文件目录”,显示为“$(FileDir)”;千万不用选择“捕获输出”复选框!不然不会弹出命令控制台!
要把写的.java代码保存到你的java文件夹里才行。

C. 如何编译和调试android源码中platform/system/core下的代码

首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh
注意,这是一个source命令,执行之后,就会有一些额外的命令可以使用:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。

D. 如何在Windows的命令行下进行程序编译和gdb调试

1、概念介绍。

1、Windows下的cmd就是Windows的命令行终端,其中的一些命令和Ubuntu的有些许区别,不过在这个博客的范畴中没有涉及。
2、Windows的环境变量,大概可以说是如果设置好了在path路径里面了,就可以直接在cmd命令行里直接调用程序。

2、配置操作

1、选择计算机,右键,选择“属性”
2、“高级系统设置” –> “环境变量”

3、选择“环境变量”里面的“系统变量” ,选择path, 编辑

4、添加环境变量。注意:最好不要动原来的东西,在原来的东西的基础上在前面或后面加上一个分号,然后把Dev C++安装目录下的MinGW64/bin文件夹的路径复制到环境变量里面去。。(此处是巧借了dev的自带编译器,如果各位以其他方法找到了新版的MinGW文件的话,也可以配置成自己喜欢的)注意,路径中不要出现中文,否则可能出现有趣的问题

(ps:博主这边用的就不是dev 的MinGW64包了,而是师兄传下来的 :))

4、一路确定,配置完成。

3、使用操作

在你代码所在的文件夹,按住shift加右键,点击“在此处打开命令窗口”,进入到cmd终端,接下来就可以愉快地使用g++,gcc编译器,和gdb调试器了。

4、后期优化

大家还可以给自己配一个用的顺手的编辑器,比如sublime,gvim,(甚至是notepad ,hhh)同理把它放在环境变量里,那么也可以在cmd中直接打开,这时在win下的编程过程就和Ubuntu的非常像了。。

5、备注

1、此处以win7为例,其他版本的应该大同小异。

2、另附片面的gdb调试方法

3、使用编辑器和命令行编译的方法对于了解程序的运行过程更加有好处,但是从方便性上的确不如IDE,特别是用熟了vs的同学们就应该更能体会得到,所以各有利弊,大家自己选择最符合自己口味的编程环境就好:)

E. C语言的按照标识符、关键字、常用编译指令有哪些

我们可以在C源程序中插入传给编译程序的各中指令,这些指令被称为预处理器指令,它们扩充了程序设计的环境。现把常用的预处理命令总结如下:
1. 预处理程序
按照ANSI标准的定义,预处理程序应该处理以下指令:
#if #ifdef #ifndef #else #elif
#endif
#define
#undef
#line
#error
#pragma
#include
显然,上述所有的12个预处理指令都以符号#开始,,每条预处理指令必须独占一行。
2. #define
#define指令定义一个标识符和一个串(也就是字符集),在源程序中发现该标识符时,都用该串替换之。这种标识符称为宏名字,相应的替换称为宏代换。一般形式如下:
#define macro-name char-sequence
这种语句不用分号结尾。宏名字和串之间可以有多个空白符,但串开始后只能以新行终止。
例如:我们使用LEFT代表1,用RIGHT代表0,我们使用两个#define指令:
#define LEFT 1
#define RIGHT 0
每当在源程序中遇到LEFT或RIGHT时,编译程序都用1或0替换。
定义一个宏名字之后,可以在其他宏定义中使用,例如:
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO
宏代换就是用相关的串替代标识符。因此,如果希望定义一条标准错误信息时,可以如下定义:
#define ERROR_MS “Standard error on input \n”
如果一个串长于一行,可在行尾用反斜线”\”续行,如下:
#define LONG_STRING “This is a very very long \
String that is used as an example”
3. #error
#error指令强制编译程序停止编译,它主要用于程序调试。#error指令的一般形式是:
#error error-message
注意,宏串error-message不用双引号包围。遇到#error指令时,错误信息被显示,可能同时还显示编译程序作者预先定义的其他内容。
4. #include
程序中的#include指令要求编译程序读入另一个源文件。被读入文件的名字必须用双引号(“”)或一对尖括号(<>)包围,例如:
#include “stdio.h”
#include <stdio.h>
都使C编译程序读入并编译头文件以用于I/O系统库函数。
包含文件中可以包含其他#include指令,称为嵌套包含。允许的最大嵌套深度随编译器而变。
文件名被双括号或尖括号包围决定了对指定文件的搜索方式。文件名被尖括号包围时,搜索按编译程序作者的定义进行,一般用于搜索某些专门放置包含文件的特殊目录。当文件名被双括号包围时,搜索按编译程序实时的规定进行,一般搜索当前目录。如未发现,再按尖括号包围时的办法重新搜索一次。
通常,绝大多数程序员使用尖括号包围标准的头文件,双引号用于包围与当前程序相关的文件名。
5. 条件编译指令
若干编译指令允许程序员有选择的编译程序源代码的不同部分,这种过程称为条件编译。
5.1#if、#else、#elif #endif
条件编译指令中最常用的或许是#if,#else,#elif和#endif。这些指令允许程序员根据常数表达式的结果有条件的包围部分代码。
#if的一般形式是:
#if constant-expression
Statement sequence
#endif
如#if后的常数表达式为真,则#if和#endif中间的代码被编译,否则忽略该代码段。#endif标记#if块的结束。
#else指令的作用与C语言的else相似,#if指令失败时它可以作为备选指令。例如:
#include <stdio.h>
#define MAX 100
Int main(void)
{
#if MAX>99
printf(“Compiled for array greater than 99.\n”);
#else
printf(“Complied for small array.\n”);
#endif
return 0;
}

F. 汇编语言初学者怎样调试代码

如果用MASM编译的话,先跳转到MASM的目录下,再输入masm
[文件名.asm]后按几下Enter,完成编译,然后输入link
[文件名.obj]任然按几下Enter,链接生成EXE文件.最后如果你想运行程序,则直接输入文件名Enter.调试的话用debug
[文件名.exe],

G. 如何优雅的在 macOS 上编译调试 C++ 程序

使用vim新建一个c++程序文件,例如test.cpp
编辑你的c++代码,然后保存退出
使用g++命令来编译c++程序,如果编译成功,则没有任何提示,如果失败,会出现程序错误的提示
直接执行刚刚编译的c++程序

H. 在linux里,c程序的编辑、编译、调试的详细步骤是什么

(1)用工具写好C程序...比如vi
(2)打开终端,进入你存放C语言代码的路径 例如: cd /opt/
(3)gcc a.c -o abc 意思是:把你的a.c编译成abc可执行文件
(4)在当前目录终端下 运行生成的abc,例如: ./abc 前面的.不要掉了
后面可以用gdb进行调试,你可以自己去学习...这是最基本的!!

热点内容
long在c语言中 发布:2024-05-04 19:54:39 浏览:781
svn在本地文件夹 发布:2024-05-04 19:50:21 浏览:445
crontab不执行shell脚本 发布:2024-05-04 19:49:38 浏览:80
安卓机买哪个好2021 发布:2024-05-04 19:49:38 浏览:843
apriori算法改进 发布:2024-05-04 19:24:08 浏览:45
为什么我要自己写脚本 发布:2024-05-04 19:19:13 浏览:183
手机照片重命名为什么还有文件夹 发布:2024-05-04 19:19:06 浏览:309
安卓手机为什么连不上iphone的热点 发布:2024-05-04 19:18:58 浏览:209
海量小文件存储ftp 发布:2024-05-04 19:13:21 浏览:274
真我手机如何解除手机密码 发布:2024-05-04 18:24:44 浏览:708