# 在命令行中执行下面的命令
mvn -Dtest=org.apache.hadoop.hive.llap.tezplugins.TestLlapTaskCommunicator -Dmaven.surefire.debug test
# 如果指定类的具体某一个test方法可以在后面指定"#testXXXX"
# 重新开一个窗口执行:
jdb -attach 127.0.0.1:5005
# 在jdb命令行下执行设置断点:
stop at org.apache.hadoop.hive.llap.tezplugins.TestLlapTaskCommunicator:74
stop in org.apache.hadoop.security.authentication.client.TestKerberosAuthenticator.testAuthenticationHttpClientPost
# 也可以使用“stop in" 设置断点到一个函数
# 在执行`run`,运行到断点处
run
# 使用下面的命令可以将断点设置在对应的方法
stop in org.apache.hadoop.security.authentication.client.TestKerberosAuthenticator.testAuthenticationHttpClientPost
run
常用调试命令
next -- 执行下一步,相当于pdb中的n
step -- 进入函数内执行,相当于pdb中的s
print -- 打印变量值,相当于pdb中的p
使用use设置sourcepath,否则无法使用list命令,注意,一般设置到/java那一级
Time-limited test[1] use /home/zuul/src/github.com/liusheng/hadoop/hadoop-common-project/hadoop-auth/src/test/java/
Time-limited test[1] use
/home/zuul/src/github.com/liusheng/hadoop/hadoop-common-project/hadoop-auth/src/test/java/
Time-limited test[1] list
239 }
240 }
241
242 protected void _testAuthenticationHttpClient(Authenticator authenticator, boolean doPost) throws Exception {
243 => start();
244 try {
245 HttpClient httpClient = getHttpClient();
246 doHttpClientRequest(httpClient, new HttpGet(getBaseURL()));
247
248 // Always do a GET before POST to trigger the SPNego negotiation
注意,直接使用
mvn test
命令,会执行编译,检查等操作,如果想直接执行test,可以用surefire:test
, 注意:这种方式必须要先cd到对应的module下面,也就是pom.xml
所在的目录。如果要指定具体的子项目(module)下面执行特定的用例,可以用下面的方法:
mvn test调试
常用调试命令
pdb
中的n
pdb
中的s
pdb
中的p
使用
use
设置sourcepath
,否则无法使用list
命令,注意,一般设置到/java
那一级列出项目内所有的子模块:
列出依赖包:
如果项目是Gradle管理的,怎么用jdb来调试?
首先执行命令:
然后在执行
gradle
命令再新开一个窗口执行:
其他和Maven一致