程序调试

vs2015调试时无法查看变量值(调试时无法查看string、vector等类型的值)的解决方法

匿名 (未验证) 提交于 2019-12-02 23:43:01
一、必要声明 参考自: https://blog.csdn.net/u014552102/article/details/82466516 二、现象 最近使用vs2015调试C++程序,结果发现了一个很奇怪的问题:调试时无法查看stl里面string,vector,list等容器类的值了,如下图所示,调试时把鼠标移动到“str”这个变量上面,结果发现显示“str|{...}”,无法显示str的值了。 正常情况下调试时应该显示“hello world”才对,如下图所示: 三、原因及解决方法 如 https://blog.csdn.net/u014552102/article/details/82466516 博主所说,出现这个问题的原因是.natvis可视化工具工件(vs2015安装目录\Common7\Packages\Debugger\Visualizers\stl.natvis)出现问题。解决方法如下: 1、用 https://blog.csdn.net/u014552102/article/details/82466516 博主提供的文件; 2、拷贝其他人电脑上没出现问题的stl.natvis文件; 之后将原stl.natvis替换即可。 文章来源: https://blog.csdn.net/weixin_39566026/article/details/92584636

调试与对拍(一):生成测试数据+对拍

匿名 (未验证) 提交于 2019-12-02 23:43:01
  今天打比赛时令小编很气愤,隔壁LSH有文件运行错误,重提了一遍老师就收,而小编重提却爱搭不理,于是小编决定还是自己造个数据把代码重测一遍,于是潜心钻研生成测试数据的方法。   其实很简单,用随机数生成器生成几个随机数再根据数据规模取模就可以了,(必要时可以增加一些特定测试点),代码就几行不做解释了( 别问我为什么,windows系统编程指令就是这样,想想hello为什么要这么拼写吧 ):   data.cpp 1 #include<iostream> 2 #include<windows.h> 3 #include<ctime> 4 using namespace std; 5 int main() 6 { 7 srand(time(NULL)); 8 cout<<rand()%10<<" "<<rand()%10; 9 return 0; 10 }   接着是两组测试代码(一看就会出现问题)   a.cpp 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int a,b; 6 cin>>a>>b; 7 cout<<a*a+b; 8 return 0; 9 }   b.cpp 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5

sliverlight--无法启动调试。

匿名 (未验证) 提交于 2019-12-02 23:43:01
2019独角兽企业重金招聘Python工程师标准>>> 安装完VS2010新建了一个Silverlight看一下,默认是Silverlight 3 版本 在博客园里看了一篇文章,进入应用页面后,按提示下载Silverlight 4版本并安装。 重新回到开发环境,按F5运行,出现以下错误: 未安装 Silverlight Developer 运行时。请安装一个匹配版本。 经过搜寻,有两种方法: 1。不调试,直接运行的烂方法: 对着SilverlightApplicationXXX.Web项目右键属性―》Web->去掉Silverlight的勾。 只能浏览不能F5调试。 2。还是走正路的好: 下载Silverlight4 tools工具并安装: 点击下载 安装好后项目多了一个Silverlight4版本。 补充: ------------------------------------------- 解决VS2010中文版正式版无法安装Silverlight4 Tools的办法 打开注册表 命令:regedit 打开节点:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS\BuildNumber 在此处增加一个"字符串值",输入名称为“1033”,设置它的值为“10.0.30319” ------------

Keil MDK5实际使用中遇到的一些坑

匿名 (未验证) 提交于 2019-12-02 23:42:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LZPRO/article/details/84100156 最近对一些新出芯片进行开发,编译环境从Keil MDK4升级到Keil MDK5,然后就遇到各种坑 1.程序无法全速运行,无法进入断点,进入不了相应函数 2 调试读写Flash的程序,debug后提示“internal command error” 原因:一直没想通,为了方便调试加了while循环 while(1) { FLASH读写相关操作 } 文章来源: https://blog.csdn.net/LZPRO/article/details/84100156

bison调试

匿名 (未验证) 提交于 2019-12-02 23:40:02
版权声明:欢迎转载 请注明出处 https://blog.csdn.net/weixin_44850440/article/details/91458880 当我们的文法设计的有问题的时候,就需要开启bison的调试方式来检测文法错在哪里,那么如何开启bison的调试方式呢? bison调式需要做的事情如下: 1 )在语法文件*.y定义段开启yydebug,最终如下: %{ #include <string.h> #include <stdlib.h> #include <stdio.h> int yydebug=1; %} 命令如下: bison a.y -d -v --debug -d是用来生成头文件的,与调试无关。 -v生成output文件,描述了我们创建的自动机,可以帮助我们分析调试内容。 3)编译目标代码,如下: gcc -o test lex.yy.c a.tab.c -lfl -ly 4)运行test 5)结合程序输出信息和output文件的内容,可以知道我们设计的语法错在哪里。 文章来源: https://blog.csdn.net/weixin_44850440/article/details/91458880

阿里开源线上应用调试利器 Arthas的背后

匿名 (未验证) 提交于 2019-12-02 23:40:02
Arthas是一个功能非常强大的诊断工具,功能点很多,例如:jvm信息、线程信息、搜索类中的方法、跟踪代码执行、观测方法的入参和返回参数等等。 Instrumentation把 Java的instrument 功能从本地代码中解放出来,使之可以用Java代码的方式解决问题。使用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义。Instrumentation是Java SE 5中的新特性。在SE 5中只能在运行前进行加载,在SE 6中实现能够在运行时加载。例如java -javaagent: agent.jar -jar agent-demo.jar ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。asm字节码增强技术主要是用来反射的时候提升性能的,如果单纯用jdk的反射调用,性能是非常低下的

Wingware Wing IDE Pro激活教程

匿名 (未验证) 提交于 2019-12-02 23:34:01
Wingware Wing IDE Pro 是一个基于Python编程语言开发的集成开发环境,为软件开发者提供了一个集成的工程管理器、图形界面的调试器、源代码浏览器,并预设了一个高级的源代码编辑器 WingIDE Pro 7 Mac 破解版 安装教程 WingIDE Pro 7 Mac 破解版镜像包下载完成后打开,拖动软件【WingPro】到右侧应用程序进行安装。 应用程序中打开WingIDE,点击【accept】选择【Activate a purchased license】,先放一边待用。打开终端,输入【python 】将镜像包中的WingIDE破解工具【kg.pyc】拖到桌面。把桌面上的WingIDE破解工具拖进终端。WingIDE破解工具拖进去之后按回车. 此时终端会生成一串WingIDE注册码。把WingIDE注册码复制到软件注册页面。WingIDE注册码输入之后请点击【continue】把WingIDE软件中生成的request code复制到终端中。request code输入之后在终端中回车。终端会生成另一串WingIDE注册密钥。选择第二个选项“or:activate manually…”,把WingIDE密钥复制到软件注册页面的正确位置中再点击【Continue】WingIDE for Mac提示您注册成功!!点击观看 视频教程 WingPro 7 Mac

工程简介与调试流程

匿名 (未验证) 提交于 2019-12-02 23:34:01
STM32入门一百步第十九步 1.工程简介 2.调试流程 1.工程简介 工程模块 CMSIS:内核驱动程序 Lib:内核功能的基本函数库(可根据实际需要删减) Startup:单片机启动程序 User:用户程序(包括主函数) Basic:内部功能的驱动程序 Hardware:外部硬件的驱动程序 2.调试流程 程序编译完后,输出hex文件,打开FlyMcu,选中hex文件即可编译,核心板设置为 FLASH ISP 模式(即 长按模式按钮 ,让 灯闪一次 状态) build 可以编译修改后的程序(建议修改后的程序编译用它,节省时间) rebuild 重新编译(耗时) 转载请标明出处: 工程简介与调试流程 文章来源: https://blog.csdn.net/DC_Lord/article/details/90339958

反调试技术

匿名 (未验证) 提交于 2019-12-02 23:34:01
一、Windows API方法 Win32提供了两个API, IsDebuggerPresent和CheckRemoteDebuggerPresent可以用来检测当前进程是否正在被调试,以IsDebuggerPresent函数为例,例子如下: BOOL ret = IsDebuggerPresent(); printf("ret = %d\n", ret); 破解方法很简单,就是在系统里将这两个函数hook掉,让这两个函数一直返回false就可以了,网上有很多做hook API工作的工具,也有很多工具源代码是开放的,所以这里就不细谈了。 二、查询进程PEB的BeingDebugged标志位 当进程被调试器所附加的时候,操作系统会自动设置这个标志位,因此在程序里定期查询这个标志位就可以了,例子如下: bool PebIsDebuggedApproach() { char result = 0; __asm { // 进程的PEB地址放在fs这个寄存器位置上 mov eax, fs:[30h] // 查询BeingDebugged标志位 mov al, BYTE PTR [eax + 2] mov result, al } return result != 0; } 跟第二个方法一样,当进程被调试的时候,操作系统除了修改BeingDebugged这个标志位以外,还会修改其他几个地方

kafka producer程序编写调试

匿名 (未验证) 提交于 2019-12-02 23:32:01
1、Maven里面配置jar     <dependency>     <groupId>org.apache.kafka</groupId>     <artifactId>kafka_2.11</artifactId>     <version>0.11.0.2</version>   </dependency>   <dependency>     <groupId>org.apache.spark</groupId>     <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>     <version>2.2.0</version>   </dependency> 2、Idea里面编写producer程序 import org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord} import scala.util.Random import java.util object KafkaProducer {   def main(args: Array[String]): Unit = {     //kafka-console-producer.sh --broker-list master:9092