程序调试

perl 的调试和性能测试

最后都变了- 提交于 2019-12-09 21:14:11
perl程序的调试,以前玩php都是print,var_dump(),firebug之类来调试。在perl中,也有很多来方法我们调试的。在我看来调试分二种,一种是功能调试(排错之类保证功能完整).一种是性能调试。 功能调试 1. 最常用的方法 (1. print:这个用户就不用写了吧 (2. 模块: Data::Dumper 这个使用很容易,主要就是使用Dumper的函数做输出 #!/usr/bin/perl use strict; use Data::Dumper; my $hash = { foo => 'test1', bar => { foo1 => 'test2', } }; print Dumper($hash); 这个会非常非常清楚的输出数据结构的信息: $VAR1 = { 'bar' => { 'foo1' => 'test2' }, 'foo' => 'test1' }; (3 模块:Smart::Comments 这个模块就更加好用了,伟大的CPAN…..这个只需要###加上后面的变量就能输出变量中的信息。你可以在调试时打开,调试完了就关掉。超爽。 #!/usr/bin/perl use strict; use Smart::Comments; my $hash = { foo => 'test1', bar => { foo1 => 'test2', } };

vscode远程调试c/c++程序

戏子无情 提交于 2019-12-09 17:44:56
一 前言 由于工作中需要在linux环境中开发C++项目,需要对linux下的c++文件进行编译和调试,因此本文介绍一种通过vscode远程开发linux下的c++代码用到的编译和调试方式。 开发环境: 客户机(vscode安装机器):windows 10 所需的vscode插件: c/c++ 开发机:(c++程序运行机器):centos7 开发机所需环境: g++,gdb 前置条件 1、满足上述开发环境。 如果不满足,可以参考以下资料: 安装vscode centos7 安装g++,gdb 这里推荐安装 8.X版本,一般cetos都预装了gcc4.8.2,但是为了编译效率,强烈建议安装gcc8编译套件 2、已经可以使用vscode连接到linux系统进行远程开发 可以参考以下文章进行配置: 2019 VS Code 远程开发配置(热乎的) 二 实现方式 1 编写测试代码 在vscode新建目录,编写简单测试程序,本文给出一个简单的测试demo: // main.cpp # include <stdlib.h> # include <iostream> using namespace std ; int main ( void ) { int count = 10 ; for ( size_t i = 0 ; i < count ; i ++ ) { cout << i <<

018输出错误信息与调试信息

泪湿孤枕 提交于 2019-12-09 16:33:49
实例说明   程序开发过程中对于业务代码的部分功能需要配合调试信息以确定代码执行流程和数据的正确性,当程序出现严重问题时还要输出作物警告信息,这样可以在调试中完成开发。本实例将介绍如何输出调试信息和错误信息。 关键技术   本实例使用System类中的out和err两个成员变量来完成测试信息和错误信息的输出,这两个都是类变量,调用输出流通用的println()方法来输出一行数据。 来源: https://www.cnblogs.com/cglib/p/12011762.html

VC6在64位Win7下调试无法退出的问题(缺少TLLOC.DLL和DM.dll)

天涯浪子 提交于 2019-12-09 15:11:37
win7 64位VC++6.0调试代码无法关闭窗口解决方法 VC6在64位Windows7下调试的时候,再结束调试,程序无法退出。 问题描述:当我击F5开始一个项目的调试时,程序在我设置的断点处停止,这时按下Shift+F5后,vc6可以退出调试状态,但是WINDOWS系统的任务栏上会留下前面调试时产生的程序。该进程不能被结束,即使我使用任务管理器也不可以终止程序。而且,当修改代码之后,就不能重新编译了。想结束该进程的唯一的办法是关闭VC6,并重新开启。 一般的解决方法:不使用"结束调试"这个功能,让程序正常结束(就是放个可以退出的菜单或者按钮, 而不是使用Shift+F5的退出);或者在调试运算时,在断点之间关掉程序。 终极解决方法:检查文件DM.dll版本,DM.dll在程序安装目录的“Common/MSDev98/Bin”。正确的版本是6.0.9782.0。 软后下载TLLOC.DLL。 其中关键的地方是DM.dll的版本是否正确,如果DM.dll版本不对,应该下载DM.dll对原始版本进行覆盖,然后下载TLLOC.DLL,之后就可以任意退出调试了。 两个DLL都是在“Common/MSDev98/Bin”中,直接覆盖就行了。 具体做法 打开C盘: 1.找到C:\Program Files (x86)目录 2.找到安装vc6.0的目录C:\Program Files (x86

vivado工程板级调试调用ISE的chipscope软件查看波形

走远了吗. 提交于 2019-12-09 13:34:42
转载自 https://www.cnblogs.com/hcr1995/p/9929359.html Vivado如何使用Chipscope Vivado作为新的设计工具,并没有集成Chipscope,取而代之的是新的debug工具:hardware debug。后者的优势是可以与SDK联合调试,软硬件协同开发时非常有用,但其无法实时持续的观测信号的变化,且从目前2013.4的版本反应的无法抓取非顶层文件信号的问题(大量时序错误)对设计开发非常不便。 通过对Chipscope工作原理的分析,应该可以通过间接的方式在VIVADO工程中使用,经过上板测试,确实可以做到,下面是实现的步骤: 1、 Synthesis后点击Open Synthesized Design,完成后点击File原工程综合后导出netlist(.edn)和constraint(.xdc); 注:导xdc要勾选上所有引脚 2、 打开Chipscope的Core Insert软件,将step1中的netlist作为输入,指定输出文件名及路径; 注:导入的是顶层.edn文件,其他ip核的edn文件不用加上去。输出文件为顶层的.ngo。 3、 Chipscope随后自动加载step2的netlist,按照需求添加信号,方法与ISE调用时相同; 4、 点击Chipscope界面里的insert按键

调试与改错:以下程序的功能是对任意输入的一个3位数

余生长醉 提交于 2019-12-09 13:31:34
调试与改错:以下程序的功能是对任意输入的一个3位数,判断各个位数之和是否等于6,是则输出“满足条件”,否则输出“不满足条件”。程序中有两处错误,找出并改正。 #include "stdio.h" void main () { int x,c1,c2,c3,y; scanf(" %d ",&x); c1=x/100; c2=x/100%10; c3=x%10; y=c3+c2+c1; if(y=6) printf("满足条件\n"); else printf("不满足条件\n"); } ★★★目的: 1;注意语句体的{ },设想没有{ }情况完全变了。 2;注意=与==的区别,若下次再错,打PP了 #include<stdio.h> int main () { int x,y; printf("请输入一个三位数:\n"); scanf("%d",&x); y=x/100+x/10%10+x%100%10; if(y==6){ printf("满足条件\n"); }else{ printf("不满足条件\n"); } return 0; } 来源: oschina 链接: https://my.oschina.net/u/4227963/blog/3138933

调试Linux内核环境MenuOS系统

梦想与她 提交于 2019-12-09 12:46:20
调试Linux内核环境MenuOS系统 一、实验简介 本文采用自己搭建环境的方式对gdb进行了模拟。 (1)工具介绍 1 )QEMU介绍 QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作。通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB等设备进行交互。 2 )BusyBox介绍 Busybox中包含了linux中的很多指令,Busybox是一个开源项目,遵循GPL v2协议。Busybox将众多的UNIX命令集合进一个很小的可执行程序中,可以用来替代GNU fileutils、shellutils等工具集。Busybox中各种命令与相应的GNU工具相比,所能提供的选项比较少,但是也足够一般的应用了。 (2)建立环境的几个重要步骤 1)安装编译工具链。 2)安装qemu模拟器 3)编译arm架构内核 4)测试qemu是否正常启动 5)制作文件系统,本实验采用下载下来的根文件系统 6)启动系统,测试gdb的服务端和客户端。 嵌入式开发由以下几个步骤完成。 (3)gdbServer原理 目标机器需要运行程序和 gdbserver

Revit二次开发调试

折月煮酒 提交于 2019-12-09 04:15:56
1、引言 VS提供的调试(debug)功能能够帮助我们发现程序的逻辑缺陷,是Revit二次开发程序的必经之路。下面就介绍一下如何利用VS对Revit二次开发代码进行调试。 1.1 方法一 修改项目属性 / 调试 / 启动外部程序 / 选择Revit安装路径下的Revit.exe,确定之后可按F5进行调试。 2.2 方法二 首先打开一个Revit 调试 /附加到进程 / 在可用进程中选择Revit.exe 选择行,F9添加断点 来源: CSDN 作者: 专治BrIM 链接: https://blog.csdn.net/weixin_40626630/article/details/82454234

WPF开发之解决程序调用自定义dll库在部分win7电脑上无法运行的情况

ぃ、小莉子 提交于 2019-12-09 02:57:34
最近在参与一个wpf项目的时候,程序中要用到自定义的dll库,在本机上win10系统上调用的时候程序可以正常运行,但是发现在win7的电脑上调用时程序会异常崩溃,后来查阅资料发现是因为我的dll库需要依赖的动态库在win7的电脑上找不到而导致的。 找了网上的一些解决办法,最后发现将dll的项目属性改为静态连接是最好的解决办法 步骤如下: 打开dll项目——》选择项目-属性——》在属性页目录中选中c/c+±代码生成,将其中的运行库选项改为多线程(/MT),再重新编译-生成dll,这样生成的dll就包含了所需要的依赖库,便可以在没有所需依赖库的机器上运行 这里顺便解释一下运行库几个选项的含义: 在调试模式(debug)下,使用调试运行库: 多线程调试(/MTd)、多线程调试DLL(/MDd) 在发布模式(release)下,使用发布运行库: 多线程(/MT)、多线程DLL(/MD) 调试模式下运行库带d,但发布模式不带。调试与发布的区别在于,发布模式省略了程序的调试信息,简单来说就是删除了调试模式下的用于调试的内容,所以一般情况下,发布模式下生成的可执行文件的大小比调试模式下生成的要小 静态链接: 多线程(/MT)、多线程调试(/MTd) 动态链接: 多线程DLL(/MD)、多线程调试DLL(/MDd) 动态链接为D,静态链接为T。两者的区别在于

intellij使用docker来调试

北慕城南 提交于 2019-12-08 23:46:07
背景 intellij idea作为java开发常用的ide,结合当前主流的虚拟化docker发布,如何结合两者进行调试开发是一个基本使用场景 环境配置 macOS mojave Docker Desktop for mac IntelliJ IDEA 2019.1.2 (Ultimate Edition) 执行步骤 1. 确认安装docker插件 默认是安装,查看方式 设置-插件-查询 docker intergration 关键字 2. 配置docker信息 通过设置-编译-docker配置,创建一个“docker mac“运行器,选择docker deamon是本机的docker for mac,然后会看到底下显示着”connection successful“ 3. 创建一个项目spring boot 具体参考 官网介绍 4. 创建docker file 在项目目录下创建docker file,我在main/docker/创建dockerfile文件,并输入如下内容 FROM openjdk : 8 VOLUME /tmp ADD dockerci - 0.0.1 - SNAPSHOT.jar app.jar ENTRYPOINT [ "java" , "-Djava.security.egd=file:/dev/./urandom" , "-agentlib:jdwp