firemail

标题: 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 [打印本页]

作者: Qter    时间: 2020-1-18 18:20
标题: 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。
本帖最后由 Qter 于 2020-1-18 21:53 编辑

问题描述

“smtpsend.exe”(Win32):  已加载“F:\github\chunhuitech\firemail\src\firemail_solution\Ext\libetpan\build-windows\x64\Debug\smtpsend.exe”。已加载符号。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\ntdll.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\kernel32.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\KernelBase.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“F:\github\chunhuitech\firemail\src\firemail_solution\Ext\libetpan\build-windows\x64\Debug\libetpan.dll”。已加载符号。
“smtpsend.exe”(Win32):  已加载“F:\github\chunhuitech\firemail\src\firemail_solution\Ext\libetpan\build-windows\x64\Debug\libsasl2.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“F:\github\chunhuitech\firemail\src\firemail_solution\Ext\libetpan\build-windows\x64\Debug\libeay32MD.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\ws2_32.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\msvcrt.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\rpcrt4.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\nsi.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\gdi32.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\user32.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\lpk.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\usp10.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\advapi32.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\sechost.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\crypt32.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\msasn1.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\msvcr120.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“F:\github\chunhuitech\firemail\src\firemail_solution\Ext\libetpan\build-windows\x64\Debug\zlib.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“F:\github\chunhuitech\firemail\src\firemail_solution\Ext\libetpan\build-windows\x64\Debug\ssleay32MDd.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“F:\github\chunhuitech\firemail\src\firemail_solution\Ext\libetpan\build-windows\x64\Debug\libeay32MDd.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\msvcr120d.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\imm32.dll”。无法查找或打开 PDB 文件。
“smtpsend.exe”(Win32):  已加载“C:\Windows\System32\msctf.dll”。无法查找或打开 PDB 文件。
程序“[3256] smtpsend.exe”已退出,返回值为 1 (0x1)。

解决办法:

1. 在VS2013的菜单栏,选择【工具】->【选项】。
2. 在选项窗口中,选择【调试】->【常规】,然后在右侧的窗口中勾选“启用源服务器支持”。
3. 在选项窗口中,选择【调试】->【符号】,然后在右侧的窗口中勾选“Microsoft符号服务器”。
4. 单击“本地Windows调试器”调试运行程序。
5. 在第一次运行程序时,会从Windows服务器上下载相关的符号集,因此需要等待一段时间。
只是第一次加载,不用担心。或者,你也可以等加载完了之后,再把之前勾选的取消掉,也没有问题。

利用缓存


找到这个目录下符号缓存,拷贝出来,找个地方存放。
最后再去掉Microsoft符号服务器,要是不去,每次都要从Microsoft下载很麻烦,已经缓存了,我们就可以利用好这些缓存,至此完美解决。

自己设置了目录还是默认目录下%UserProfile%\AppData\Local\Temp\SymbolCache,但都没找到有缓存文件 -----------要翻墙才能下载下来,可能下载不完整,也加载不成功!


———————————————
但上面方法并没有解决
[size=18.6667px]你只要选择不是调试的方式编程就可以:用ctrl+F5快捷就可以了
[size=18.6667px]







作者: Qter    时间: 2020-1-18 19:14
64位vs2017可以运行调试32位工程;

有些错误可能是因为IDE不同版本导致的,例如vs2005工程在vs2017上运行出现一系列错误。

vs里32位项目和64位项目的区别:

由于操作系统内存分配的不同,导致软件开发过程中,需要编译不同版本的软件。
1。编译程序根据需要选择不同的编译环境。
x86和win32为32位程序,x64为64位程序,可以选择不同的编译条件形成不同位的软件。
2。代码中的基本数据类型,会根据操作系统的位数来分类内存大小。
如int型在32位操作系统下为4字节,在64位系统下为8字节。
因此在64位上对int型数据操作,编译生成32位的程序,有可能导致int型越界,软件出现问题。
3。32位的程序在64位操作系统上运行,由于64位操作系统的寻址和偏移问题,也有可能导致程序在运行过程中,计算结果与32位系统不一致。
4。64位操作系统理论上能够箭筒32位和64位软件,32位操作系统不能运行64位程序。

在vs中,
x64:生成的程序只能在64位系统中运行。如果你的用户用的是32位的系统(比如XP),则运行不了程序。
x32:生成32位程序,由于64位系统也能运行32位的程序,所以这个选项跟Any CPU一样可以同时运行在两种系统中,但效率没有Any CPU高,因为64位的软件跟CPU交互的数据要比32位的接近大一倍。
所以当你要把项目代码转移到另一台计数机时,就要考虑这个问题。假如你原来选择的目标平台是x64,新电脑的系统是32位,当你按F5调试运行时,则跑不起来,这时把目标平台改成Any CPU或者x32就能解决了。

注意:如果你的项目引用有32位的dll(c++编译生成的),则只能选择32位平台,否则也会报错,整个项目要保持一致。

在项目调试的过程中,我们可以看到32位与64位程序加载的dll不同。

64位系统中 32位程序从C:\Windows\SysWOW64中加载dll;而64位程序从C:\Windows\System32中加载dll。



作者: Qter    时间: 2020-1-18 21:40
在 Visual Studio 调试器中指定符号 (.pdb) 和源文件
[color=var(--info-dark)] 备注
本文适用于 Visual Studio 2015。 如果你正在寻找最新的 Visual Studio 文档,请在左上方使用版本选择器。 建议升级到 Visual Studio 2019。 [color=var(--info-dark)]在此处下载

程序数据库 (.pdb) 文件(也称为符号文件)将你在类、方法和其他代码的源文件中创建的标识符映射到在项目的已编译可执行文件中使用的标识符。 .pdb 文件还可以将源代码中的语句映射到可执行文件中的执行指令。 调试器使用此信息确定两个关键信息:显示在 Visual Studio IDE 中的源文件和行号,以及可执行文件中在设置断点时要停止的位置。 符号文件还包含源文件的原始位置以及(可选)源服务器的位置(可从中检索源文件)。
在 Visual Studio IDE 中调试项目时,调试器知道查找代码的 .pdb 和源文件的默认位置。 如果要在项目源代码之外调试代码(如项目调用的 Windows 或第三方代码),则你必须指定 .pdb(也可以是外部代码的源文件)的位置,这些文件需要与可执行文件完全匹配。
在 Visual Studio 2012 之前,在远程设备上调试托管的代码时,需要将符号文件放置在远程计算机上。 这种情况不会再出现。 所有符号文件必须位于本地计算机上或“工具”/“选项”/“调试”/“符号” 页中指定的位置。
调试器搜索 .pdb 文件的位置为什么符号文件需要与可执行文件完全匹配?
调试器只会为可执行文件加载与该可执行文件生成之时所创建的 .pdb 文件完全匹配的 .pdb 文件(即该 .pdb 文件必须是原始 .pdb 文件或其副本)。 由于除了创建正确且高效的代码的主要任务之外,编译器的编译速度也得到了优化,因此可执行文件的实际布局可更改,即使代码本身未更改也是如此。 有关详细信息,请参阅 [color=var(--primary-base)]为什么 Visual Studio 要求调试器符号文件必须与同时生成的二进制文件完全匹配?
指定符号位置和加载行为
在 VS IDE 中调试项目时,调试器将自动加载位于项目目录中的符号文件。 可以在“工具”/“选项”/“调试”/“符号”中为 Microsoft、Windows 或第三方组件指定备选搜索路径和符号服务器。还可以指定希望调试器自动为其加载符号的模板。 之后,你可以在主动进行调试时手动更改这些设置。
使用符号服务器查找不在你的本地计算机上的符号文件
Visual Studio 可从实现 symsrv 协议的符号服务器下载调试符号文件。 [color=var(--primary-base)]Visual Studio Team Foundation Server 和 [color=var(--primary-base)]Windows 调试工具 是可实现符号服务器的两个工具。 在 VS “选项” 对话框中指定要使用的符号服务器。
可供使用的符号服务器包括:
Microsoft 公共符号服务器
若要调试在调用系统 DLL 或第三方库时出现的故障,通常需要使用系统 .pdb 文件,这些文件包含表示 Windows DLL、EXE 以及设备驱动程序的符号。 你可从 Microsoft 公共符号服务器获取这些符号。 除了 MDAC、IIS、ISA 和 .NET Framework之外,Microsoft 公共符号服务器为 Windows 操作系统提供符号。
若要使用 Microsoft 符号服务器,请选择 “调试” 菜单上的 “选项和设置” ,然后选择 “符号” 。 选择 “Microsoft 符号服务器” 。
内部网络或本地计算机上的符号服务器
你的团队或公司可为你自己的产品创建符号服务器,并作为外部源符号的缓存。 你自己的计算机上可能具有符号服务器。 你可在 VS “选项” / “符号” / “符号” 。
第三方符号服务器
Windows 应用程序和库的第三方提供程序可提供对 Internet 上的符号服务器的访问。 你还可在 “选项” / “符号” 页上输入这些符号服务器的 URL。
[color=var(--info-dark)] 备注
如果使用 Microsoft 公共符号服务器以外的符号服务器,请确保该符号服务器及其路径是可信任的。 由于符号文件可以包含任意可执行代码,因此你可能面临安全威胁。

调试时查找并加载符号
只要调试器处于中断模式,你就可以为之前被调试器选项排除的或编译器无法找到的模块加载符号。 可以从调用堆栈窗口、模块窗口、局部变量窗口、自动窗口和所有监视窗口的快捷菜单中加载符号。 如果调试器在没有可用符号或源文件的代码中中断,则将显示一个文档窗口。 在此可以找到所缺文件的相关信息,并采取相应措施来查找并加载它们。
使用未加载任何符号的文档页查找符号
调试器可通过多种方式中断没有可用符号的代码:
选项
描述

加载符号
尝试从 “选项” / “符号” / “选项” 对话框中指定要使用的符号服务器。 如果无法找到符号文件,则将启动文件资源管理器,以便你能够指定要搜索的新位置。

符号加载信息
显示已加载符号文件的位置或调试器无法查找文件时已搜索位置的信息。

符号设置...
打开 VS “选项” / “符号” / “选项” 对话框中指定要使用的符号服务器。

始终自动加载
将符号文件添加到由调试器自动加载的文件列表中。

为符号文件设置编译器选项
当你从 VS IDE 生成项目并使用标准 “调试” 生成配置时,C++ 和托管编译器将为你的代码创建相应的符号文件。 也可在命令行上设置编译器选项以创建符号文件。
C++ 选项
程序数据库 (.pdb) 文件保存调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。 使用 [color=var(--primary-base)]/ZI 或 /Zi (适用于 C/C++)生成时,将创建 .pdb 文件。
在 Visual C++中, [color=var(--primary-base)]/Fd 选项命名由编译器创建的 .pdb 文件。 使用向导在 Visual Studio 中创建项目时, /Fd 选项将设置为创建一个名为 project.pdb 的 文件 .pdb 文件。
如果使用生成文件生成 C/C++ 应用程序,并指定 /ZI 或 /Zi 而不指定 /Fd,则最终将生成两个 .pdb 文件:
查找源文件调试器搜索源文件的位置
调试器在下列位置查找源文件:
使用“无源”/“未加载任何符号”页查找并加载源文件
当调试器在源文件不可用的位置中断执行时,它将显示 “未加载任何源” 或 “未加载任何符号” 页,这些页可帮助你查找源文件。 当调试器无法找到可执行文件的符号 (.pdb) 文件来完成搜索时,将显示 “未加载任何符号” 。 “无符号”页将提供用于搜索文件的选项。 如果在执行选项之一后找到 .pdb,并且调试器可以使用符号文件中的信息检索源文件,则将显示源。 否则,将显示描述问题的 “未加载任何源” 页。 此页将显示选项链接,这些链接可执行可以解决问题的操作。
将源文件搜索路径添加到解决方案
你可指定网络或本地目录来搜索源文件。
使用源服务器
如果本地计算机上没有源代码,或者 .pdb 文件与源代码不匹配,则可使用源服务器来帮助调试应用程序。 源服务器接受文件请求并返回实际的文件。 源服务器通过名为 srcsrv.dll 的 DLL 文件运行。 源服务器读取应用程序的 .pdb 文件,该文件包含指向源代码存储库的指针,以及用于从该存储库检索源代码的命令。 你可以限制允许从应用程序的 .pdb 文件执行的命令,方法是在名为 srcsrv.ini 的文件内列出允许的命令,该文件必须与 srcsrv.dll 和 devenv.exe 位于同一个目录中。
[color=var(--primary-dark)] 重要
任意命令都可嵌入应用程序的 .pdb 文件中,因此请确保在 srcsrv.ini 文件中仅放入要执行的命令。 任何尝试执行不在 srcsvr.ini 文件中的命令都将导致出现一个确认对话框。 有关更多信息,请参见 [color=var(--primary-dark)]Security Warning: Debugger Must Execute Untrusted Command。 未对命令参数执行任何验证,因此请慎用受信任的命令。 例如,如果你信任 cmd.exe,恶意用户则可能会指定使该命令变得危险的参数。

启用源服务器的使用


作者: Qter    时间: 2020-1-19 00:37

说在前面:   微软符号服务器地址http://msdl.microsoft.com/download/symbols, 但是你手动在浏览器里面输入是访问不到的,他只提供给调试程序进行下载,可以用下面方法进行下载。

  方法1:  VS2003以后的版本,通过attach到一个进程中或者启动一个程序进行调试,然后打开模块列表窗口(主菜单-->调试--> 窗口--> 模块,或者按Ctrl+D,M直接打开),在列表中每一个模块进行右键,即可进行下载符号。

 方法2: 使用windbg进行下载,同样是attach或run一个程序,设置一下符号路径,然后使用 .reload 或者.reload /f /v ntoskrnl.exe  (这个试过好像不可以,具体请高手指出原因),当然也可以强制进行符号加载 使用  ld *  加载当前模块中所有的模块符号,或者 ld ntdll (加载指定模块)。

  方法3:  采用symchk.exe 来进行加载(优点:在不调用dl的情况就可对dll进行符号加载,防止dll符号文件遗漏加载的问题)。

  symchk /r c:\windows\system32 /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols

  这个的意思是对c:\windows\system32下的exe和dll进行递归加载符号,目前不太清楚,怎么指定只对特定文件进行单独加载符号文件,请高手指出。

  方法4: 自己写下载符号文件的程序(当然如果你对windows的整个调试机制比较熟悉,可以采用,但是个人觉得没那个必要,毕竟微软提供了工具让你使用了)。

建立 Symbols服务器
  最简单和方便的办法是使用网络共享路径,典型的,我们会在一台服务器上,依Symbols的类型建立多个路径:
  [url=]\\symbols_server\ReleaseSymbols[/url]
  [url=]\\symbols_server\TempSymbols[/url]
  [url=]\\symbols_server\WinSymbols[/url]
  ReleaseSymbols用于保存所有产品正式发布版本的symbols,这个目录中的pdb文件是不能删除的,
  TempSymbols用于保存非正式版本(例如测试阶段)的pdb文件,把它们分开保存,是因为pdb文件比较大,如果磁盘空间不够,就可以删除一些。
  WinSymbols用于存储各种windows版本系统本身的symbols。

  对于ReleaseSymbols和TempSymbols目录应该是可控的,即一般设置管理员可写,其它人只读,通常由管理员在编译机编译完后同时更新其pdb文件。WinSymbols可以设置所有人可读写。

设置调试器Symbols路径
  WinDBG、VC.Net及以上版本都可以通过设置环境变量指定Symbols路径,并都能根据环境变量设置自动去微软服务器拉取window系统symbols。右键我的电脑—〉“属性”—〉“高级”—〉“环境变量”—〉“系统变量”,新建两个环境变量:
  _NT_SYMBOL_PATH=srv*\\symbols_server\WinSymbols*http://msdl.microsoft.com/download/symbols
_NT_ALT_SYMBOL_PATH=cache*c:\symbols;\\symbols_server\ReleaseSymbols;\\symbols_server\TempSymbols;\\symbols_server\WinSymbols

  这样设置后,调试器首先会到_NT_ALT_SYMBOL_PATH指定的共享路径中去寻找pdb文件,并把找到的文件缓存到c:\symbols目录下,下次访问时就不用到共享目录中查找,这样可以提高速度。

  当在_NT_ALT_SYMBOL_PATH中找不到时会查看路径_NT_SYMBOL_PATH,接着自动从微软官方网站下载windows系统的pdb文件,并缓存到共享目录[url=]\\symbols_server\WinSymbols[/url]中,缓存的好处是当其它人下载相同pdb文件时就直接从共享目录拉取,不用再跳到微软网站拉取。

  注意设置以上变量后第一次使用Windbg或者VS调试时,因为要下载windows系统的pdb文件,可能要等待一段时间(Windbg会在命令行窗口右下角显示“BUSY”状态,但也有可能不显示状态,VS在状态栏会显示Loading symbols for XXX),并且pdb文件都相对比较大,视网速快慢可能要等待十几分钟到几个小时。另外在测试中发现,WinDbg下载symbols的速度比VS快得多。

  如果要经常使用VC.Net及以上版本,上面的设置会有些问题,因为如果有一些dll没有symbols,这时VS每次进入调试状态时都会试图到微软网站查找相应的pdb文件,导致启动调试的速度很慢。

  最好的方法是在windbg的菜单“File”->“Symbol File Path...”填入
  cache*c:\symbols;
  \\bobdeng-pc\ReleaseSymbols;
  \\bobdeng-pc\TempSymbols;
  \\bobdeng-pc\WinSymbols;srv*
  \\bobdeng-pc\WinSymbols*http://msdl.microsoft.com/download/symbols

  而对VS.Net及以上版本,在“Tools”—〉“Options”—〉“Bebugging”—〉“Symbols”面板中,逐一添加pdb路径
  [url=]\\bobdeng-pc\ReleaseSymbols[/url]
  [url=]\\bobdeng-pc\TempSymbols[/url]
  [url=]\\bobdeng-pc\WinSymbols[/url]
  在“Cache symbols from server...”中填入c:\symbols。
  然后仅仅在需要用VS打开dmp文件定位Crash时才添加Windows系统Symbols路径:http://msdl.microsoft.com/download/symbols,当调试完后可以去掉该项选中状态使其失效。

  或者使用symchk工具下载symbols,见后面《附注:手工下载windows symbols的方法》

配置pdb文件编译输出目录
  常常一个产品包含许多模块,为方便pdb管理,可以设置编译时统一输出symbol到一个的目录,例如Debug版本输出到pdbDebug,Release版本输出到pdb目录。在VC6.0下可以通过“工程属性”-〉“Link”-〉“Project Options”手工修改输出路径,VS.Net类似也可以指定输出目录。

同步PDB文件到Symbols服务器
  pdb文件同步可以使用windbg安装目录下的symstore.exe命令行工具,为方便操作,可以在pdb文件输出目录建立两个批处理文件,例如
新建批处理文件UpdateTemp.bat,用于同步该目录下所有的pdb文件到服务器共享目录[url=]\\symbols_server\TempSymbols[/url],内容如下:
"C:\Program Files\Debugging Tools for Windows (x86)\symstore.exe" add /r /f "./*.*" /s [url=]\\symbols_server\TempSymbols[/url] /t "MyProduct" /v "Temp"
@PAUSE
类似的,建立另一个批处理文件UpdateRelease.bat,同步pdb文件到服务器共享目录[url=]\\symbols_server\ReleaseSymbols[/url]

开发人员配置编译生成的本地symbols路径
  并非所有编译的pdb都同步到symbols服务器上,为方便开发者自己调试,还需要配置本机的pdb文件路径。

  对于windbg,可以在菜单“File”->“Symbol File Path...”填入编译时的pdb输出目录,多个目录用;隔开。

  使用VS时,在菜单“Tools”—〉“Options”—〉“Bebugging”—〉“Symbols”面板中填入编译时的pdb输出目录。


附注:手工下载windows symbols的方法
  如果不想等到调试时才下载,也可用通过windbg自带的symchk.exe工具下载windows系统的symbols,或者某个dmp文件所有相关模块的symbols,并且通过这个工具下载速度也会更快一些,具体方法如下:
1. 下载dmp文件所有相关模块的symbols,缓存到共享路径,便于其它人快速下载。
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /id c:\MyApplication.dmp /s SRV*\\symbols_server\WinSymbols\*http://msdl.microsoft.com/download/symbols

2. 下载某个已运行进程所有相关模块的symbols,缓存到共享路径,便于其它人快速下载。
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /ie qq.exe /s SRV*\\symbols_server\WinSymbols\*http://msdl.microsoft.com/download/symbols

3. 下载某个exe/dll文件对应的symbols,例如user32.dll,输入命令行:
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" c:\windows\system32\user32.dll /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols

4. 下载整个目录下(例如system32)所有模块的symbols:
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /r c:\windows\system32\ /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols



作者: Qter    时间: 2020-1-19 00:50
本帖最后由 Qter 于 2020-1-19 01:05 编辑

Windbg下载微软符号表1.      设置环境变量

_NT_SYMBOL_PATH

srv*c:\symbols*http://msdl.microsoft.com/download/symbols



2.      翻墙

发现不翻墙好像下载不了。



3.      发现有时候需要某个模块(dll或者exe)的pdb(pdb文件ida也能识别),不过windbg就是不自动下载。

这儿有两种下载方法:

1>    命令:

symchk tlntSess.exe

//下载tlntsess.pdb到c:\symbols目录下



2》     Windbg命令:

.reload /f tlntSess.exe



参考:

http://bbs.pediy.com/showthread.php?t=151058
———————————————
下载安装 http://www.firemail.wang:8088/fo ... thread&tid=9866









欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3