用 Adplus 自动获取 dump

windgb分析dump文件 现实的开发中可能会出现,动态库dll或者exe崩溃的情况,并且也生成了dump文件,但是由于符号文件pdb文件没有保留,所以通过windbg的!analyze -v是调试不出具体的dump信息的。 如上图所示,通过这个栈信息时看不出问题出在哪里的 必须加载好可执行程序或者dll的符号文件才行。如果当时的代码还保留着,那就不用担心了。直接重新编译一下原先的代码,并将用Ctrl+S编辑wind 阅读详情
程序依然有些 crash. 在 UnhandledExceptionFilter 中写 dump 文件. 但有的 crash 还是没能生成 dump. 打算用 ADPlus 来生成, 让 qa 都安装 Windbg. 不过让 qa 每次运行程序还要再运行一下 adplus 还是麻烦. 所以考虑用 IFEO, 运行程序的同时自动加载 adplus.

写成了一个 inf 文件, 放到 windbg 所在目录, 右击/安装 即可:

  1. [Version]
  2. Signature="$CHICAGO$"
  3. Provider=nickx,  2008
  4. [DefaultInstall]
  5. AddReg=conn_AddReg
  6. [conn_AddReg]
  7. hklm,"%conn1_SMWCIc%","debugger",,"cscript ""%01%/adplus.vbs"" -c ""%01%/adplus.cfg"" -CTCL -o ""%dump_folder%"" -lcv -NoDumpOnFirst -quiet -crash -sc "
  8. [Strings]
  9. conn1_SMWCIc="SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options/yourprogram.exe"
  10. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  11. ;;;  SPECIFY DUMP FOLDER HERE
  12. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  13. dump_folder="c:/dumps"
注意, 其中引用了一个 adplus.cfg:

  1. <ADPlus>
  2.     <PostCommands>
  3.         <Cmd>sxi -c "gn;" ld</Cmd>
  4.         <Cmd>sxi -c ".echo;.echo This process is shutting down!;.echo ;.time;~*kvn250;.echo;!runaway" epr</Cmd>
  5.     </PostCommands>
  6. </ADPlus>
用于禁用在程序退出是生成 dump 的行为. 因为我只是需要记录 crash 时的 dump.

贴出来和大家共享. 

数字蓝牙功放 数字蓝牙功放(TPA3110+BK8000L),基于D类数字功放芯片TPA3116蓝牙功放,HIFI级带滤波15Wx2蓝牙数字功放,支持有线和蓝牙两种音源输入 阅读详情

相关推荐

Abaqus 2023 保姆级安装避坑指南:从环境变量到许可证配置,一次搞定

本文提供Abaqus 2023的详细安装指南,涵盖环境变量设置、许可证配置等关键步骤,帮助用户避开常见安装陷阱。通过系统环境检查、目录结构规划、许可证服务器安装及Java环境配置等实用技巧,确保顺利完成安装并优化软件性能。

weixin_42524276的博客 425

window系统环境下使用adplus抓取dump方法

window系统环境下使用adplus抓取dump方法 下载安装dbg_amd64.msi 打开C:\Windows\System32,找到cmd.exe,右键-以管理员身份运行 在命令窗口中切换到步骤1安装目录 输入命令:adplus.exe -crash -pn 进程名 -o dump文件输出目录 回车执行,会弹出另外一个cdb.exe 命令框,如果进程异常挂死该命令框自动关闭,并将挂死信息写入步骤4设置的输出目录 以上 ...

qq_25478569的博客 626

三甲医院网络架构与安全建设实战

华为OceanStor] [华为OceanStor][PACS存储双活] [HIS数据库同步]患者隐私 数据脱敏 天清Web防火墙动态脱敏策略。主数据中心 --[OTV专线]-- 备数据中心。实现医疗业务网/卫生专网/互联网三网隔离。核心业务配置(华为CE6865)自动备份配置(每天02:00)安全事件响应(30分钟SLA)漏洞扫描(每周日00:00)实现医疗物联网统一接入管控。五、等保2.0合规关键配置。堡垒机登录(双因素认证)四、医疗物联网安全方案。

有小小的远大抱负 1911

如何利用adplus来dump某个process的memory

<br /><br />前面提到了dump文件能保存进程状态,方便分析。由于dump文件记录的是进程某一时刻的具体信息,所以保存dump的时机非常重要。比如程序崩溃,dump应该选在引发崩溃的指令执行时(也就是1st chance exception发生的时候)获取,这样分析dump的时候就能够看到问题的直接原因。<br />Adplus是跟Windbg在同一个目录的VBS脚本。Adplus主要是用来抓取dump文件。 详细的信息,可以参考Windbg帮助文件中关于adplus的帮助。有下面一些常见

keilsi的专栏 2634

Vivado IP核:AXI Uartlite的使用经验分享

1. IP基本设置 在Vivado中,打开IP Catalog,搜索“uart”: 双击“AXI Uartlite”,进入IP配置界面: 这里可以配置IP的具体参数,设置时钟频率、波特率等,完成后,生成IP即可。 2. IP的时序特点 点击下面的链接可以下载该IP核的官方指导文档: https://china.xilinx.com/support/documentation/ip_docume...

weixin_43265132的博客 1万+

SAP生产订单(创建-下达-发料-报工-入库)全流程及反向流程

SAP创建下达报工入库发料以及取消发料取消入库,批量下达删除关闭,生产订单出入库查询和状态更改查询记录

weixin_38974136的博客 2万+

如何使用 ADPlus 解决“挂起”和“崩溃”问题

概要ADPlus 是 Microsoft 产品支持服务 (PSS) 提供的一个工具,它可以解决停止响应(挂起)或失败(崩溃)的任何进程或应用程序的问题。ADPlu... ADPlus 是 Microsoft 产品支持服务 (PSS) 提供 的一个工具,它可以解决停止响应(挂起)或失败(崩溃)的任何进程或应用程序的问题。ADPlus (ADPlus.vbs) 通常可以用作 Microsoft Int...

weixin_33857230的博客 359

用Python绘制DCA曲线详解及示例代码

在这篇文章中,我们将详细解释如何使用Python绘制DCA曲线,并提供示例代码。通过使用上述的示例代码和解释,你可以自己尝试不同的投资金额、期数和增长率来绘制自定义的DCA曲线。通过运行上述代码,我们将得到一个绘制了DCA曲线的图表。该图表将显示出DCA投资策略在给定投资金额、投资期数和增长率下的投资价值随时间的变化情况。在上述代码中,我们使用一个循环来计算每个投资期的DCA曲线值。现在,我们可以使用上述函数来计算DCA曲线的值,并将其绘制成图表。最后,我们返回计算得到的DCA曲线值列表。

TechPr的博客 1408

使用Adplus抓取Dump小结

转自:http://hi.baidu.com/ju_feng/blog/item/564f0439f133d7fa3a87cebe.html Adplus抓取Dump有三种方式: 一种是Hang模式adplus -hang -pn Prs.exe -o c:/dump -quit /2/当进程进程运行时生成dump  二是Crash模式adplus -crash

shellching的专栏 6002

【全球人口数据集】全球人口密度数据集GPWv4

全球人口密度数据集GPWv4

WW、forever的博客 1002

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

jks212454的博客 420

Adplus,抓取dump的方便工具

Adplus是跟Windbg在同一个目录的VBS脚本。Adplus主要是用来抓取dump文件。 详细的信息,可以参考Windbg帮助文件中关于adplus的帮助。有下面一些常见用法:假设我们的目标程序是test.exe:假设test.exe运行一段时间崩溃,在test.exe启动后崩溃前的这个时间段,运行下面的命令监视:  Adplus –crash –pn tes

Steven Lei的博客 2652

Android车载蓝牙开发全攻略:从基础到高级优化

本文系统介绍了Android车载蓝牙开发的核心技术与实践指南。文章首先阐述了蓝牙在智能汽车中的关键作用,包括免提通话、音频流媒体等应用场景。随后详细解析了蓝牙协议基础,重点介绍了HFP、A2DP等车载常用协议。开发实战部分提供了设备发现、连接、数据传输的完整代码示例,并融入多线程和内存优化技巧。通过真实车载案例,展示了启动时间、流畅度和资源使用的优化策略。最后针对面试需求,提供了专业的技术问答,涵盖蓝牙开发全流程。全文紧密结合Android车载开发职位要求,为开发者提供了一套完整的蓝牙技术解决方案。

郑伟强dev的专栏 118

vc++程序崩溃后不生成dump文件

这几天给自己的程序通过SetUnhandleExceptionFilte加dump机制。实测时发现不是所有的崩溃,都能生成dump文件:比如assert(false);语句就没有生成dump文件。上网查了一下发现跟我有相同困惑的人还不少,比如这篇 " 很多软件通过设置自己的异常捕获函数,捕获未处理的异常,生成报告或者日志(例如生成mini-dump文件),达到Release版本下追

lixiangminghate的专栏 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

性能分析-根据进程情况自动抓取内存

最近我所在项目组的测试服务器的w3wp进程CPU经常接近100%,w3wp是IIS6及之后版本应用程序池的进程。肯定程序出了问题,但由于一个应用程序池可能挂接多个网站,我们的每个网站几乎都是庞大的代码量,不好定位到底哪里出了问题,并且进程可能不稳定,为了不用一直观察测试服务器w3wp是否正常,我用代码写了一个windows服务,当发现w3wp进程占用cpu达到指定值,就自动抓取对应异常时...

weixin_30319097的博客 135

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

理解操作系统对程序的反馈:异常(Exception)和通知(Debug Event)【3】

<br />2.3.4 题外话和相关讨论<br />错过第一现场后还从dump中分析出线索吗<br />前面介绍了用Windbg截取1st chance exception进行分析的方法。<br />但是好多情况下,程序并没有运行在调试器下。崩溃发生后留在桌面上的是红色的框框,这时候已经错过了第一现场,但还是有机会找到对应exception的信息。<br />前面介绍过,红色的框框是通过 UnhandledExceptionFilter函数显示出来的,而UnhandledExceptionFilter的参数

uestcylg的专栏 1575

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

windbg Adplus,抓取dump的方便工具

2.3.2  Adplus,抓取dump的方便工具前面提到了dump文件能保存进程状态,方便分析。由于dump文件记录的是进程某一时刻的具体信息,所以保存dump的时机非常重要。比如程序崩溃,dump应该选在引发崩溃的指令执行时(也就是1st chance exception发生的时候)获取,这样分析dump的时候就能够看到问题的直接原因。Adplus是跟Windbg在同一个目录的VBS脚

yyyzlf的专栏 2280

ADPLUS使用配置文件设置断点时无法创建DUMP文件原因分析

ADPLUS简介 ADPLUS.vbs是Debugging Tool for Windows里带的一个VBS脚本。我们可以用它很方便地生成进程的内存转储文件。从Debugging Tool for Windows版本6.12.2.633后,ADPLUS.vbs被ADPLUS.EXE所替代。原有的VBS脚本更名为adplus_old.vbs. 背景 在一台服务器上,ASP.NET出现随机崩溃的...

weixin_30354675的博客 384

adplus抓取dmp文件,crash和hang两种方式

http://aloneplayer.spaces.live.com/blog/cns!C3CB6D654135F83D!422.entry?wa=wsignin1.0&sa=10734357 Working with Dump File       如果程序员比

GUOMIN0907的专栏 2684

WinDbg基础(3)Adplus参数设置

DPlus是如何工作的? ================ ADPlus 具有两种操作模式: “Hang”模式用于解决进程挂起、100% CPU 使用率以及不涉及崩溃的其他问题。当您在挂起模式下使用 ADPlus 时,在运行脚本之前必须等待,直到进程停止响应(与崩溃模式不同,挂起模式不是持久性的)。“Crash”模式用于解决 Dr. Watson 错误导致的崩溃问题,或者用于解决

zyx_hawk的专栏 1295

利用 windbg 或 adplus 生成 dump 文件

强力 调试 工具 windbg: 1. 到windbg官网下载安装文件http://www.windbg.org/ 2.选择下载32bit or 64bit 版本: 我的经验:我们的编译机环境和运行机环境一致,都为winserver2003 sp2 64bit,因为是在运行机上安装,所以下载64bit版本 详见:Choosing the 32-Bit or 64-Bit Debuggin...

weixin_30376083的博客 214

adplus 抓取dump

工具所在路径 C:\Program Files\Windows Kits\10\Debuggers\x64 cmd窗口切换目录倒adplus所在路径下,输入抓取命令。adplus -hang -pn w3wp.exe -quiet -o d:\dumps Microsoft Windows [版本 10.0.10240](c) 2015 Microsoft Corporation. All...

weixin_30612769的博客 288

dump分析超级详细分析

Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。在 Windows 系统上, dump 文件分为内核 dump 和用户态 dump 两种。前者一般用来分析内核相关的问题,比如驱动程序;后者一般用来分析用户态程序的问题。 一般的程序员可能接触不到dump文件,反而是运维会用的多一些。不过如果你抗战在第一线,学会dump的分析无疑是掌握一柄利器。因为很多场景下,

u011500419的专栏 1万+

告别黑盒:用WinDbg和Adplus给你的软件装个“行车记录仪”(监控崩溃自动抓Dump)

本文详细介绍了如何使用WinDbg和Adplus工具为软件部署崩溃监控系统,自动捕获Dump文件以解决关键业务系统中的崩溃问题。通过实战案例和高级配置技巧,帮助运维人员快速定位和修复软件异常,告别黑盒调试的困扰。

weixin_30388677的博客 182

How to Create Dump File for Applications

使用WinDBG这个工具,可以在应用程序异常终止或者无响应时获取它的尸体,以用来解剖研究。Creating Dump File       在Vista环境中抓取Dump文件很方便,在task manager(Ctrl-Shift-Esc)中,选中要生成dump文件的进程,点击context menu中的"Creat Dump File"就可以了.      通常,使用WinDBG目录下(C:/Program Files/Debugging Tools for Windows (x86))的a

做一个优雅的程序员 3225

Windbg和ADPlus抓Dump

转摘自网络 Feature ADPlus Dr. Watson WinDbg UserDump Creating a dump file when an application crashes (postmortem debugging) Yes Yes Yes Yes Creating a dump file when an applicatio...

weixin_30362083的博客 156
上一篇: 实现 UnhandledExceptionFilter() 需要的几个问题
下一篇: Asynchronous HTTP and Comet architectures
nickr
博客等级 码龄24年 23粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值