精华内容
下载资源
问答
  • APP_DEBUG作用

    2012-12-03 16:22:00
    一、调试模式如何开启 ...二、开启调试模式,有什么作用?(默认关闭,在ThinkPHP.php 33行左右) 答:1/非法调用的时候,有详细的报错信息,便于调试 2.APP_DEBUG为true并且缓存文件存在,走缓存文件,否则加载...

    一、调试模式如何开启

    在入口文件中define('APP_DEBUG',true);  

    //显示调试模式 在配置项里面加入
    'SHOW_PAGE_TRACE'=> true,

    二、开启调试模式,有什么作用?(默认关闭,在ThinkPHP.php 33行左右)

    答:1/非法调用的时候,有详细的报错信息,便于调试

    2.APP_DEBUG为true并且缓存文件存在,走缓存文件,否则加载Common文件夹下runtime.php (代码如下 Think.php)

    3.同时不产生缓存文件   APP_DEBUG为true 会删除RUNTIME_FILE(缓存)文件   (runtime.php  126行左右).

    ThinkPHP.php文件  (最底下)

    if(!APP_DEBUG && is_file(RUNTIME_FILE)) {
      // 部署模式直接载入运行缓存
      //echo __FILE__; //G:\wamp\www\orange\ThinkPHP\ThinkPHP.php
      require RUNTIME_FILE;
    }else{
      // 系统目录定义
      //THINK_PATH G:\wamp\www\orange\ThinkPHP
      defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).'/');
      // 加载运行时文件
      require THINK_PATH.'Common/runtime.php';
    }

    展开全文
  • 本章主要探讨针对以下的几个问题: 1、DEBG的作用及与静态资源的关系; 2、刚上手web框架的时候发现在浏览器运行未能加载静态...而DEBUG作用主要有三种: 1、DEBUG=True时(即生产环境),我们可以在浏览器...

    本章主要探讨针对以下的几个问题:

    1、DEBG的作用及与静态资源的关系;
    2、刚上手web框架的时候发现在浏览器运行未能加载静态资源;
    3、Nginx与静态资源的关系;
    4、其他服务器。

    DEBUG的作用

    一般的web框架里一般都会分为开发模式和生产模式,具体的体现为DEBUG是True还是False。而DEBUG的作用主要有三种:

    1、DEBUG=True时(即开发环境),我们可以在浏览器和控制台看到输出的错误信息,但是如果是生产模式,一旦代码出错,则会被用户看到源代码。

    注意:在设置为False时,还需要设置ALLOWED_HOSTS,让用户只能通过某个IP或域名访问。

    2、DEBUG=True时,修改项目后,会自动重启项目,不需要手动重启。

    当然,在我们自己开发的项目上是这样的,因为每次我们修改完都要中断上次运行的manage.py命令,然后再次输入该命令运行才能看到修改后的页面。而设置为开发模式时,只需要刷新页面即可。但是,如果是比较大的项目,该项目依赖于大量的其他服务等,仍然需要手动重启该服务。

    3、静态文件的管理。

    当DEBUG=True的时候,django是通过StaticFilesHandler来管理静态文件的,会自动帮我们对静态文件进行路由。

    而DEBUG=False的时候,Django就不处理静态文件了,或者说静态文件访问的接口就不走Django了,而是交由其他的静态服务器如Nginx来处理。

    如果你将DEBUG改为了False,却没有部署Nginx,那就会发现无法访问静态文件,CSS和JS样式全都不显示。查看F12,也会发现无法加载。我记得我刚开始学框架的时候,碰到这种问题,不对头的查了半天却都找不到正确答案,但是因为知识面太小,完美的避开了这个原因,导致一度都不清楚为什么不显示。

    而Django在部署时,还需要通过collectstatic命令来将所有静态文件统一放置到根目录下的某个公共的目录下(由STATIC_ROOT所指定的目录,需自己设置),这样做我们才能通过某个路由访问静态文件。

    部署时配置静态文件

    1、在settings.py文件里找到STATIC_URL项,添加后两项:

        # 利用STATIC_URL映射STATIC_ROOT,
        # 部署后通过该路径取代真实的静态文件路径,在页面访问,
        # 如路径为IP:port/path/to/mysite/common_static/appname/xx.css,
        # 在浏览器访问IP:port/mysite/static/common_static/appname/xx.css,
        STATIC_URL = '/static/'
        # collectstatic命令执行后统一放置的目录
        # 可取其他名,但建议统一用static,
        # 在Nginx里配置location /static/时指向该路径
        STATIC_ROOT = os.path.join(BASE_DIR, '/static/') 
        # 非必须,是非app下的static目录,比如一些公共static存放位置
        STATICFILES_DIRS = [
          os.path.join(BASE_DIR, 'common_static'), 
        ]
    

    2、加入到urls. py,以便模板访问:

    	from django.conf import settings
    	from django.conf.urls.static import static
    	
    	urlpatterns = [
    	    # ... the rest of your URLconf goes here ...
    	] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    3、执行命令:

    python manage.py collectstatic
    

    执行后,会将项目中所有app的static目录(包括STATICFILES_DIRS 下的静态文件)都搜集到STATIC_ROOT 指定的目录里。

    4、一般来说,Nginx默认生产的配置文件路径为:/etc/nginx/nginx.conf ,可以直接改,也可以新创建一个(有时候可能会需要部署多个项目),进行如下配置:

        server {
            listen         8000; 
            server_name    127.0.0.1 
            charset UTF-8;
            access_log      /var/log/nginx/yourweb_access.log;
            error_log       /var/log/nginx/yourweb_error.log;
        
            # 目前不需要关注这里 
            location / { 
                include uwsgi_params;  # 这里是配置了uwsgi之后
                uwsgi_pass 127.0.0.1:8000;
                client_max_body_size 100M;
            }   
            # 这一段用于配置静态文件对应的名字
            # /static对应STATIC_ROOT 
            location /static {  
                autoindex on;
                alias /your/path/to/static/;  # 你的static最终合成的路径
             }
         }
    

    Nginx

    对我们的web开发来说,Nginx有三个常用场景:处理静态资源、负载均衡、反向代理。

    一般来说,我们部署时常用的:Nginx+uwsgi+supervisor。Nginx接受请求,如果请求的是静态资源,则由Nginx自己处理,直接返回给客户端。而如果是请求动态资源,比如与数据库的增删改查等,Nginx则会将请求分发给uwsgi,而supervisor只是用于方便管理uwsgi进程。

    Nginx其实不是必须的,uwsgi自己本身就可以完成整个的和浏览器交互的流程,但正如前面提到的Nginx的三个常用场景,uwsgi在负载均衡和静态文件的处理上均不如Nginx,以及uwsgi本身是内网接口,不应该被直接访问,而Nginx却可以只开放某个接等等好处。

    另外,除了Nginx,还有一个出现的比较早的是Apache,二者刚好相反,Nginx对于处理静态文件很不错,但动态请求几乎做不了什么,而Apache在动态的处理上有优势。

    uwsgi

    而Python的WSGI是后来出现的,也是用来处理动态请求的,它其实算是一个为了统一而出现的服务器网关接口。WSGI没有官方的实现, WSGI更像一个协议,只要遵照这些协议,WSGI应用都可以在任何服务器上运行。

    WSGI(全称Web Server Gateway Interface,服务器网关接口),是Web服务器(如nginx)与应用服务器(如uWSGI)通信的一种规范,uWSGI是实现了WSGI server协议的服务器。

    它出现的原因是,比较早以前,Python应用程序通常是为CGI,FastCGI,mod_python中的一个而设计,甚至是为特定Web服务器的自定义的API接口而设计的。就是不同的框架对应不同的web服务器,选择某种框架就被规定了你要选择哪种web服务器,反之亦然。

    而Django和Flask都是实现了WSGI application协议的web框架。它们都有自己实现的WSGI server,因此我们可以直接启动,但主要用于服务器调试,但真正部署生产环境时就要用uWSGI服务了。(uwsgi是协议,uWSGI是web服务器,注意大小写。)

    Django使用的是Python自带的simple HTTPServer创建的,在安全性和效率上不怎样,uWSGI服务器自己实现了基于uwsgi协议的server部分,我们只需要在uwsgi的配置文件中指定application的地址,uWSGI就能直接和应用框架中的WSGI application通信。

    uWSGI是一个全功能的HTTP服务器,将HTTP协议转化成语言支持的网络协议,如WSGI协议、uwsgi协议、http协议,让Python可以直接使用。

    uwsgi是一种uWSGI的内部协议,使用二进制方式和其他应用程序进行通信。

    参考链接:
    1、https://baike.baidu.com/item/wsgi/3381529?fr=aladdin
    2、https://www.xuebuyuan.com/652975.html
    3、https://blog.csdn.net/liugaigai427/article/details/83280353
    4、https://www.jianshu.com/p/1c6ae9ccd174
    5、https://docs.djangoproject.com/en/2.0/howto/static-files/

    展开全文
  • eclipse debug不起作用

    千次阅读 2015-06-24 00:41:03
    eclipse工具debug调试不起作用? 突然,eclipse工具无论怎么设置断点,debug不起作用。 百度上一大堆讨论都是答非所云。 后来自己发现了问题,记录,希望能帮到其他人。 正如上图所示。如果你的断点如上面的...

    eclipse工具debug调试不起作用?
    突然,eclipse工具无论怎么设置断点,debug不起作用。
    百度上一大堆讨论都是答非所云。
    后来自己发现了问题,记录,希望能帮到其他人。pic_false
    这张图命名为pic_debug_false

    pic_change
    这张图命名为pic_debug_change

    pic_ok
    这张图命名为pic_debug_true

    正如上图所示。
    如果你的断点如pic_debug_false所示,那么你的断点是不会起作用的。
    点击pic_debug_change的按钮,如果你的断点变成pic_debug_true所示。
    那么恭喜你,断点可以用了。

    展开全文
  • DEBUG_NEW#define new DEBUG_NEW说明:帮助查找内存错误。用户在程序中使用DEBUG_NEW,用户通常使用new运算符来从堆上分配。在Debug模式下(但定义了一个DEBUG符号),DEBUG_NEW为它分配的每个对象记录文件名和行号。...
    DEBUG_NEW
    #define new DEBUG_NEW
    说明:
    帮助查找内存错误。用户在程序中使用DEBUG_NEW,用户通常使用new运算符来从堆上分配。在Debug模式下(但定义了一个DEBUG符号),DEBUG_NEW为它分配的每个对象记录文件名和行号。然后,在用户使用CMemoryState::DumpAllObjectSince成员函数时,每个以DEBUG_NEW分配的对象分配的地方显示出文件名和行号。 为了使用DEBUG_NEW,应在用户的资源文件中插入以下指令: #define new DEBUG_NEW 一旦用户插入本指令,预处理程序将在使用new的地方插入DEBUG_NEW,而MFC作其余的工作。但用户编译自己的程序的一个发行版时,DEBUG_NEW便进行简单的new操作,而且不产生文件名和行号消息。
    #ifdef _DEBUG //如果定义了_DEBUG,也就是调试版程序,则执行以下三句
    #define new DEBUG_NEW //定义new为DEBUG_NEW
    #undef THIS_FILE //取消以前对THIS_FILE的定义
    static char THIS_FILE[] = __FILE__; //声明并初始化THIS_FILEO数组,数据的初始数据为该文件的文件名
    #endif
    __FILE__ 就是当前源文件的名称
    展开全文
  • f8:逐行执行程序 f7:进入到方法中 shift+f8:跳出方法 f9:跳到下一个断点,如果没有下一个断点那么就结束程序 ctrl+f2:退出debug模式,停止程序
  • #define new DEBUG_NEW 作用

    2011-10-23 21:04:09
    #define new DEBUG_NEW   在用vc时,利用AppWizard会产生如下代码: #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif 对于 #define new DEBUG_NEW ...
  • eclipse工具debug调试不起作用

    千次阅读 2018-09-14 22:38:27
    突然,eclipse工具无论怎么设置断点,debug不起作用。  原因是点击了工具栏的【Skip All BreakPoints】选项,该选项在工具栏,如下图 解决办法: 再次点击【Skip All BreakPoints】选项,你会发现断点处...
  • rpm debuginfo包的作用

    千次阅读 2018-11-13 10:16:28
    只要客户安装了普通rpm包和相应版本的debuginfo包,就可以gdb调试了,如果上面说的case3,虽然看不到源代码,但是可以打印相应的变量。 如何生成相应的debuginfo呢? 在相应的*.spec末尾加上 %debug_package ...
  • #define new DEBUG_NEW 作用

    千次阅读 2013-04-27 14:46:28
    (一) 当在debug模式下时,我们分配内存时的new被替换成DEBUG_NEW,而这个DEBUG_NEW不仅要传入内存块的大小,还要传入源文件名和行号,这就有个好处,即当发生内存泄漏时,我们可以在调试模式下定位到该问题代码处。...
  • 日常开发中Debug操作非常重要,方便我们排查问题,我们已知的快捷键有这四个: F5、F6、F7、F8   快捷键 作用描述 F5 进入当前端点所在的方法 F6 逐行调试,进入下一行代码 F7 跳出当前断点...
  • 在学这个之前,以为很难,也起不到什么作用,但是等真正运用到工程里面,才发现,这个能帮你省下很多工作量。 1,Debug和Release版本区别? 进行iOS开发,在Xcode调试程序时,分为两种方式,Debug和...
  • vue debug

    千次阅读 2017-11-07 10:30:55
    vue debug要在需要debug的js代码位置的上一行写入 debugger 这样在执行.vue文件时会自动debug到该行代码 除此之外还可以使用火狐浏览器的开发者插件vue-devtools
  • Debug和Release的区别 Debug:调试版本,包含调试信息,所以容量比release大很多,并且不进行任何优化,(优化会使调试复杂化,因为进行优化肯定会进行一些额外的处理,这样就导致了源代码和生成的指令间关系变得...
  • 断点Debug调试的作用及步骤

    千次阅读 2017-11-23 15:03:00
    断点调试的作用 * A:查看程序的执行流程 * B:调试程序 * 2. 断点:其实就是一个标记 * 3. 在哪里加断点呢? * 哪里不会加哪里 * 4.如何加断点呢? * 代码左边双击即可  * 5. 如何让程序往下执行呢? * F6 *...
  • 在他通过gcc来编译程序时,在map文件中,经常会遇到如下的情况: ... .debug_info 0x0021ac5f 0xce4XXX .debug_info 0x0021b943 0x9cfXXX .debug_info 0x0021c312 0x1119XXX最近遇到了一些问题,需要查...
  • Visual Studio Debug和Release的区别及obj的作用 一、Debug和Release的区别  1、Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成...
  • 在工程目录下生成的Debug文件夹是中间文件(编译生成的.obj等其他文件)存放的目录,在解决方案目录下的是最终文件(即可执行文件)存放的目录,放置中间文件的Debug文件夹对于用户来说没什么作用,只是在链接成最终文件...
  • debug功能

    2020-09-11 17:32:36
    01_Debug简介和意义 什么是程序DeBugDebug,是程序开发人员必会的一项调试程序的技能。 企业中程序开发和程序调试的比例为1:1.5,可以说如果你不会调试程序,你就没有办法从事编程工作。 ...
  • IntelliJ Idea debug f7 f8 f9 的作用

    千次阅读 2020-04-22 12:42:20
    使用f7 调试的时候遇到方法体的时候会进入到方法体内部 每个方法依次执行 使用f8 调试的时候 遇到方法体不会进入方法内部 只会依次执行 使用f9 调试的时候只会执行 打断点的地方 ...
  • 1. step over 步过----->一行一行的往下走,如果这一行中有方法那么不会进入该方法,直接一行一行往下走,除非你在该方法中打入断点 2. ...可以进入方法内部,但是只能进入自己写的方法内部,而不会进入方法的类库...
  • mac eclipse 调试(debug) 不起作用

    千次阅读 2012-12-27 14:21:23
    mac eclipse 调试(debug) 不起作用 我的eclipse是从eclipse.org下下来的 双击解压后 直接可以用的 但是没有在mac应用程序中注册 导致调试的时候闪一下跳出一个对话框 好不容易捕捉到的 下面操作就不解释了
  • G命令:g ****h,debug执行该命令后,cs:****h前的程序段被执行,从各个相关的寄存器中的值,我们可以看到执行的结果 P命令:到“int 21h”语句时用该命令执行,结束调试;当遇到“loop ****h”时,用p命令执行...
  • Eclipse debug模式不能正常运行,断点不起作用,变量不显示 把所有断点全部移除,然后在debug模式下运行项目,运行完之后勾上断点,再次调试可以发现,变量里面有参数 ...
  • debug时按F8/F6不起作用

    万次阅读 2016-05-07 14:54:33
    我的MyEclipse中在debug模式下调试打断点,按/F6/F8快捷键不启作用,非按这几个对应的图标才起着用。一开始我还以为我自己的键盘出毛病了呢,但是按着Fn+F8是可以使用的,所以判断不是我的键盘出现了问题。后来才想...
  • Eclipse的Debug调试技巧大全

    万次阅读 多人点赞 2017-02-12 13:43:24
    一、Debug视图 调试中最常用的窗口是: 窗口 说明 Debug窗口 主要显示当前线程方法调用栈, 以及代码行数(有调试信息的代码) 断点Breakpoints窗口 => 断点列表窗口,可以方便增加断点,设置断点...
  • Eclipse debug:F5、F6、F7、F8 作用

    千次阅读 2017-03-23 14:34:19
    eclipse debug 状态下,常用的四个键作用 F5:跳入方法 F6:向下逐行调试 F7:跳出方法 F8:直接跳转到下一个断点 1.添加断点 在代码左侧鼠标双击可以在双击的代码处添加断点 2.移除断点 在debug...
  • Debug模式

    千次阅读 2019-01-06 14:37:34
    debug模式 这个时候,如果我们没有设置debug模式,我们来运行一下我们的程序, 并没有提示哪个地方错了,什么原因错了,这样不太方便我们去调试,而且 你要看这个错误信息,只能在这个终端才能看到错误...
  • ViewDebug

    千次阅读 2012-08-14 09:45:46
    在看LinearLayout 的源码的时候,看到这样一个:ViewDebug ...它通常写在一个属性或者一个方面的上面,我知道这是一个注解,但是到底起什么作用呢?不知道。。。 ViewDebug.ExportedProperty在Doc里面是这样解释的:
  • 那就是在第一次断点生效的时候,不要点击这个按钮(Alt+F9)继续运行后续代码。 正确的做法是按F9键。 因为这个,浪费了大量的宝贵生命。唉~
  • debug调试方法

    万次阅读 多人点赞 2018-08-07 10:20:10
    debug使用方法 2016年12月26日 08:50:25 阅读数:524 1.进入debug模式(基础知识列表) 1、设置断点  ...作用域 功能 快捷键  全局 单步返回 F7  全局 单步跳过 F6  全局 单步跳入 F5  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 271,718
精华内容 108,687
关键字:

debug作用